string str = "ABCAADCBAGAAAFJK你你好吗吗"; Regex reg = new Regex(@"(.)(\1)+"); MatchCollection matchs = reg.Matches(str); if (matchs != null) { foreach (Match m in matchs) { string mValue = m.Value; Console.WriteLine("连续出现{0}次,{1},起始位置为{2}", mValue.Length,mValue,m.Index); } } Console.Read();
结果为:
嗯,谢谢了,简单明了!用正则轻松实现,学习了!
for(int i=0;i<str.length;i++){if(str[i]=='A')list.add(i)}
循环list,当下一个不等于当前+1时并且上一个等于当前-1时,往前读取到上一个不等于当前-1得到当前位置之前的连续出现次数和位置,循环结束就输出完了
还有些细节,比如最前面和最后面.写的时候注意下就可以了
谢谢翔哥,明白了!
up楼上
int count = 0; string str = "sfsfluljslfnslafuensdfre"; foreach(char c in str) { if(c == 's') { count++; } } return count;
这样只能获取出现的次数,而不能判断是否连续,楼下的方法可以,使用正则匹配一下就行!
嗯,谢谢回答,跟1L的思路一样,不过用正则能简化一下代码!