1 #include <iostream> 2 3 using namespace std; 4 5 int main() { char 6 *s="`1234567890-=qwertyuiop[]asdfghjkl;'zxcvbnm,./";//建立一个字符串常量 int i; char c; while ((c=getchar())!=EOF) { 7 for(i=1;s[i]&&s[i]!=c;i++);//' '的ASCI码为零,只需循环到C即可 8 if (s[i])//如果没有循环到字符串末尾 9 putchar(s[i-1]); 10 else//其他字符原样输出 11 putchar(c); } }
1 #include <iostream> 2 #include <iomanip> 3 #include <string.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 // 7 using namespace std; 8 9 int main() 10 { 11 char c; 12 int k=1; 13 while ((c=getchar())!=-1)//每个字符单独输入 14 { 15 if (c=='"') 16 { 17 printf("%c",k?'``':'"'); 18 //利用条件判断语句,1时输左边,0时输右边,每次K翻转 19 k=!k; 20 } 21 22 else 23 cout<<c; 24 } 25 }
5.1.3
周期串
如果一个字符串可以由某个长度为k的字符串重复多次得到,则该串以k为周期。例如,abcabcabcabc以3为周期(注意,它也以6和12为周期)。输入一个长度不超过80的串,输出它的最小周期。
样例输入:HoHoHo
样例输出:2
1 #include <iostream> 2 #include <iomanip> 3 #include <string.h> 4 #include <stdio.h> 5 #include <stdlib.h> 6 // 7 using namespace std; 8 9 int main() 10 { 11 char s[1000]; 12 int i,j,flag; 13 while (cin>>s) 14 { 15 for (i=1;i<=strlen(s);i++) 16 { 17 //I代表周期的所有可能值,这里要遍历所有可能周期值 18 flag=1; 19 for (j=i;j<strlen(s);j++) 20 { 21 if (s[j]!=s[j%i]) 22 { 23 flag=0; 24 break; 25 //从第二个潜在周期开始寻找,如果对应位置不等旗帜变为0 26 } 27 28 } 29 if (flag) 30 { 31 cout<<i<<endl; 32 break; 33 } 34 } 35 } 36 }