去除连续字符

//描述:输入一串字符(包括数字),去掉连续次数多于3的字符,如果去掉后仍有连续次数多于3的,
//继续进行同样的处理,直到结果中没有出现连续次数多于3的数字为止。
#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>

int flag = 0;
void delete(char s[])
{
	int length;
	int i, j, k , m;
	length = strlen(s);
	flag = 0;

	for (i = 2; i < length; )
	{
		if ((s[i] == s[i - 1]) && (s[i] == s[i - 2]))
		{
			j = i - 2;
			do
			{
				i++;
			} while (s[i] == s[i - 1]);
			for (k = i; k <= length; k++)
			{
				s[k - (i - j)] = s[k];
			}
			m = i;
			length -= (m - j);
			i -= (m - j);
			flag = 1;
			//i += 2;
		}
		else
		{
			i++;
		}
	}
}
int main()
{
	char s[255];
	gets(s);

	do
	{
		delete(s);
	} while (flag == 1);

	if (s[0] == ‘\0‘)
		printf("%s", "NONE");
	else
		printf("%s", s);
	return 0;
}

去除连续字符

时间: 2024-11-06 07:47:58

去除连续字符的相关文章

js字符串去除连续或全部重复字符

js字符串去除连续重复字符 ()和\number 配合使用表示重复正则第number个括号内匹配到的内容,如:(\d)\1表示重复第一个匹配块(\d)即等价于如果(\d)匹配到a,则表达式为aa 相应的可以:(some)\1* 或(some)\1+或(some)\1? 表示重复第一个匹配快得到的内容 任意次或者 至少一次或 一次or零次 1 var s = "1122333455"; 2 3 var s1 = s; 4 var c; 5 var cc = s.match(/(\d)\1

2015年华为校招机试题和代码实现(分解字符串,拼音转数字,去除重复字符并排序,等式变换)

再来一套2015年的华为机试题. 第一题(60分): 按要求分解字符串,输入两个数M,N:M代表输入的M串字符串,N代表输出的每串字符串的位数,不够补0.例如:输入2,8, "abc" ,"123456789",则输出为"abc00000","12345678","90000000" 分析思路: 容易题 1.获得字符串的长度length后,判断与要输出位数N的大小,大于N的话,直接printf前N位字符,然

最长连续字符

用递归算法写一个函数,求字符串最长连续字符的长度,比如aaaabbcc的长度为4,aabb的长度为2,ab的长度为1. #include <iostream> #include <cstring> using namespace std; int MaxLengthString(char str[]) { int len=strlen(str); if(len==1) return 1; if(str=='\0') return 0; if(*(str+1)=='\0') retu

去除反复字符并排序

执行时间限制:无限制 内容限制: 无限制 输入: 字符串 输出: 去除反复字符并排序的字符串 例子输入: aabcdefff 例子输出: abcdef 思路: 这个题用数组来哈希,时间复杂度为O(n) 1)    初始化一个int数组hash,数组的角标和数组的值正好构成一对<key,value>; 2)    遍历字符串,将每一个字符放入数组中相应的位置,出现过得字符,其数组值为1 3)    遍历数组,输出数组中数组值为1所相应的字符 Java解法: import java.util.Sc

【字符串处理算法】最长连续字符及其出现次数的算法设计及C代码实现

一.需求描述 输入一个字符串,编写程序找出这个字符串中的最长连续字符,并求出其连续出现的次数. 例如,"123444445"中的最长连续字符是4,其连续出现的次数为5:"abcddef"中的最长连续字符是d,其连续出现的次数为2:"ab"中的最长连续字符是a,其连续出现的次数为1. 二.算法设计 我们可以采取逐个比较字符串中各个字符的办法来获取最长连续字符及其连续出现的次数.程序的总体流程如图1所示. 图1 程序的总体流程 三.特殊流程考虑 在编

关于Java实现去除连续空格的延伸

第一篇随笔,技术含量比较低,当做笔记给自己记录一下现阶段的一次学习.(*^__^*) …… Java中去除连续空格的代码很简单: public static String formatString(String sourceString) { return sourceString.replaceAll(" +", " "); } 比如输入字符串"a  b   c    d",则经过调用函数处理可以输出"abcd".repla

去除重复字符并排序

运行时间限制:无限制 内容限制: 无限制 输入: 字符串 输出: 去除重复字符并排序的字符串 样例输入: aabcdefff 样例输出: abcdef 思路: 这个题用数组来哈希,时间复杂度为O(n) 1)    初始化一个int数组hash,数组的角标和数组的值正好构成一对<key,value>; 2)    遍历字符串,将每个字符放入数组中对应的位置,出现过得字符,其数组值为1 3)    遍历数组,输出数组中数组值为1所对应的字符 Java解法: import java.util.Sca

寻找连通线,参考八后算法递归,可用于验证码去除连续干扰线

寻找连通线,参考八后算法递归,可用于验证码去除连续干扰线 https://github.com/isee15/captcha-ocr/blob/master/src/cn/z/NoiseLine.java package cn.z; import java.awt.Color;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException; import javax.imageio.ImageI

[C++]_[获取Utf8字符串的字符个数和获取n个连续字符]

场景: 1.有时候需要统计utf8字符串的个数,单纯统计字节个数是不行的. 2.有时候也需要获取从某个位置开始的n个连续字符用于显示或计算. static int GetUtf8LetterNumber(const char *s) { int i = 0, j = 0; while (s[i]) { if ((s[i] & 0xc0) != 0x80) j++; i++; } return j; } static int GetUtf8Word(const char *s,int wanted