我有一个字符串,其中我应该计算要删除的最小字符数,使得修改后没有两个相邻字符相同 例如如果给我一个像RRGB这样的字符串,我的代码应该输出1(删除重复的R),对于RRRRR它的4(删除4个额外的R)
链接到问题:(以防我附加链接,如果不清楚) http://codeforces.com/problemset/problem/266/A
我最初写的代码是:
#include<stdio.h>
int main(void){
char k,s[51];
int n,l,i,c=0;
scanf("%d",&n);
scanf("%s",s);
for(i=1;i<n+1;){
while(s[i++]==s[i-1]); /*LINE OF INTEREST */
++c;
}
printf("%d",n-c);
return 0;
}
while语句来自另一个人实现的另一个问题。回到问题
while语句while(s [i ++] == s [i-1]);导致分段错误(核心转储),而(s [i-1] == s [i ++])工作完全正常,并为我的解决方案提供正确的答案
它们有什么不同?
注意:其他人提交(Codeforces上的接受提交)也不起作用并导致无限循环,就像我的代码和更改为while(s [i-1] == s [i ++])工作正常再次就像我的代码。 它是用来处理旧的C编译器的东西,或者它与它无关,并且两个语句都不同?