删除重复字符串的算法
2013-08-10 17:11
323 查看
目前有一个字符串(假设是a,b,c,a,a,b,b),要求:
1)删除重复的字符,仅保留一个(结果应该是:a,b,c)。
2)删除全部重复的字符(只要有重复,就删除,结果为:c)。
思路:
可以先用一个外循环逐个字符遍历——每次遍历一个字符的时候,判断是否还有其它相同字符(LastIndexOf):
对于1:删除其它相同的字符,直到全部删除干净。
对于2:在1的基础上,删除自身。同时因为当前元素被删除之后,后一个元素会替补上来,因此循环变量需要自减,代码如下:
1)删除重复的字符,仅保留一个(结果应该是:a,b,c)。
2)删除全部重复的字符(只要有重复,就删除,结果为:c)。
思路:
可以先用一个外循环逐个字符遍历——每次遍历一个字符的时候,判断是否还有其它相同字符(LastIndexOf):
对于1:删除其它相同的字符,直到全部删除干净。
对于2:在1的基础上,删除自身。同时因为当前元素被删除之后,后一个元素会替补上来,因此循环变量需要自减,代码如下:
/// <summary> /// 删除冗余字符串算法 /// </summary> /// <param name="elements">被操作字符串</param> /// <param name="flag">是否保留一个重复字符</param> static void RemoveDuplicatedElements(List<string> elements, bool flag) { for (int i = 0; i < elements.Count; i++) { int endIndex = elements.LastIndexOf(elements[i]); //扫描是否有重复字符 if (endIndex != i) { //不断扫描,删除,直到除去自身以外全部删除了 do { elements.RemoveAt(endIndex); endIndex = elements.LastIndexOf(elements[i]); } while (i != endIndex); //如果彻底删除重复字符,删除自身 if (!flag) { elements.RemoveAt(i); i--; } } } }
相关文章推荐
- [算法]删除字符串中重复的字符
- 删除字符串中重复的字符(算法)
- [算法] 定义一个函数,删除字符串中所有重复出现的字符。
- 算法题---“查找重复字符并删除”解题思路分析
- 删除小写字母字符串中重复字符
- 删除字符串中重复元素
- 天天算法02——删除字符串中所给定的字符串
- 删除字符串中的重复字符
- OC中删除字符串中相邻重复字符
- 删除字符串中的重复字符
- 字符串算法——有重复字符的数组或字符串全排列(Permutations II)
- 删除重复字符串-转载
- lintcode&九章算法——101. 删除有序数组里的重复元素 II ? 待解决
- c语言,删除重复的字符串和空字符
- [每天一题]删除字符串中的重复字符(不要使用额外空间)
- 删除字符串中相邻三个或以上重复的字符
- asp 删除重复字符串,多留一
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”
- 算法分析---删除字符串中出现次数最少的字符
- 【整理】删除顺序容器(如:vector)中的重复字符串