Day Tow(入门算法题)
1.确定字符串是否包含唯一字符
确定字符串是否包含唯一字符
题目描述
实现一个算法来识别一个字符串的字符是否是唯一的(忽略字母大小写)。
若唯一,则输出YES
,否则输出NO
。
输入描述
输入一行字符串,长度不超过 100。
输出描述
输出一行,若字符串的字符是唯一的,则输出YES
,否则输出NO
。
输入输出样例
示例
输入
abd25+
输出
YES
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
int temp=1;
int l= s.size();
sort(s.begin(),s.end());
for(int i=0;i<l-1;i++){
if(s[i]==s[i+1]) {
temp = 0;
}
}
if(temp==0){
cout<<"NO"<<endl;
}
else{
cout<<"YES"<<endl;
}
return 0;
}
2.确定字符串是否是另一个的排列
确定字符串是否是另一个的排列
题目描述
实现一个算法来识别一个字符串 str2str2 是否是另一个字符串 str1str1 的排列。排列的解释如下:如果将 str1str1 的字符拆分开,重新排列后再拼接起来,能够得到 str2str2 ,那么就说字符串 str2str2 是字符串 str1str1 的排列。(不忽略大小写)
如果 str2str2 字符串是 str1str1 字符串的排列,则输出 YES
;如果 str2str2 字符串不是 str1str1 字符串的排列,则输出 NO
;
输入描述
第一行为字符串str1str1;
第二行为字符串str2str2;
字符串长度均不超过 100。
输出描述;
输出一行,如果 str2str2 字符串是 str1str1 字符串的排列,则输出 YES
;
如果 str2str2 字符串不是 str1str1 字符串的排列,则输出 NO
;
输入输出样例
示例
输入
acb bac
输出
YES
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s1;
cin>>s1;
string s2;
cin>>s2;
sort(s1.begin(),s1.end());
sort(s2.begin(),s2.end());
if(s1==s2){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
return 0;
}
3.压缩字符串(思路重要)
压缩字符串
题目描述
实现一个算法来压缩一个字符串。压缩的要求如下:
-
需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。
-
压缩的格式是将连续相同字符替换为字符 + 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。
输入描述
输入一行字符串,长度不超过 500.
输出描述
输出一行。若输入的字符串可压缩,则输出压缩后的字符串,否则输出 NO
。
输入输出样例
示例
输入
AAABCCDDDD
输出
A3BC2D4
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
string s2;
int len = s.size();
int num=1;
for(int i =0;i<len;i++){
if(i+1<len&&s[i]==s[i+1]){
num++;
}
else{
s2+=s[i];
if(num>1){
s2+=to_string(num);
}
num=1;
}
}
if(s.size()>s2.size()){
cout<<s2<<endl;
}else{
cout<<"NO"<<endl;
}
return 0;
}
说明:
to_string()函数数字常量转化为字符串
4.反转字符串中的字符
反转字符串中的字符
题目描述
实现一个算法来实现反转字符数组的功能。反转的要求如下:
-
将字符数组的字符进行反转,例如 ['b', ' ', 'a', 'r'] 变成 ['r', 'a', ' ', 'b']。
-
将字符数组替换为反转后的数组。
输入描述
读入一行字符串,长度不超过 100,字符串可能含有空格。
输出描述
输出一行字符串,该字符串为读入字符串的反转字符串。
输入输出样例
示例
输入
b ar
输出
ra b
代码实现:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin, s);
reverse(s.begin(), s.end());
cout << s;
return 0;
}
说明:
getline()函数获取带空格的字符串