练习14优美字符串问题
问题如下:
DD给了dd一个由小写英文字母组成的字符串,但是dd觉得这个串太丑,dd觉得一个优美的字符串应该满足任意相邻字符都不相等,她想知道把给定字符串变成一个优美的字符串最少需要插入多少个字符,你只要告诉她,插入最少字符后的串的长度
输入描述:
第一行一个数T(1≤T≤10)
接下来T行,每行一个有且仅有小写英文字母构成的字符串s(1≤|s|≤100000)
输出描述:
输出T行,每行一个数,表示美化后串的最短长度
要想实现多个优美字符,我们应该使用for循环去遍历1到所输入的t的值,输入字符串,但注意的是,for循环之前,
一定要忽略掉换行或空格!!!
一定要忽略掉换行或空格!!!
一定要忽略掉换行或空格!!!
cin.ignore()记住这个代码,空格就被忽略掉了,这样就可以轻松加愉快,放心且大胆的输入每行字符串了。
输入字符串,同时定义一个变量countb,初始化成0,为后面的判断做准备。对于每行所输入的字符串,再进行遍历,如果前一个字符等于后一个字符,那么countb++要优化一次,以此类推,代码如下:
#include <iostream> #include<bits/stdc++.h> using namespace std; int main() { int t; cin >> t; cin.ignore(); for(int i = 1;i <= t;i++) { string a; getline(cin,a); int countb = 0; for(int i = 0;i < a.length();i++) { if(a[i] == a[i+1]) { countb++; } } cout << a.length() + countb << endl; } return 0; }