1、编写一个方法,将字符的空格全部替换为%20。假设该字符的尾部有足够的空间存放新增字符,并且知道字符串的真实长度。
输入:“Mr John Smith”
输出:“Mr%20John%20Smith”
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
cout<<"please input string:";
getline(cin,str);
for(int i = 0;i < str.length();i++)
{
if(str[i] == ' ')
{
str.insert(i,"%20");
i = i+3;
}
}
for(int j = 0; j < str.length();j++)
{
if(str[j] == ' ')
{
str.erase(j,1);
}
}
cout<<str<<endl;
return 0;
}
2、利用字符重新出现的次数,编写一个方法,实现基本的字符串压缩功能,比如:字符串aabbbccccaaa会变成a2b3c4a3若压缩后的字符没有变短,则返回原来的字符串
#include <stdio.h>
#include <string.h>
void reser(char *result,char *str)
{
int i = 0;
int j = 0;
int count = 0;
int len = strlen(str);
*result = str[i];
while(i < len)
{
while(*result == str[i])
{
count++;
i++;
}
if(*result != str[i])
{
result++;
*result = count+'0';
count = 0;
result++;
*result = str[i];
}
}
*result = '\0';
}
int main()
{
char str[30] = {0};
char result[30] = {0};
printf("请输入一个字符串:");
scanf("%s",str);
reser(result,str);
if(strlen(result) >= strlen(str))
{
printf("%s\n",str);
}
else
{
printf("%s\n",result);
}
return 0;
}
3、给定连个字符串,请编写程序确定其中一个字符串的字符重新排序后,能否变成另一个字符串
#include <stdio.h>
#include <string.h>
int judge_string(char *str1,char *str2)
{
int flag = 0;
int count = 0;
int len = strlen(str1);
int i,j;
char temp = 0;
int k = 0;
if(strlen(str1) != strlen(str2))
{
flag = -1;
return flag;
}
j = 0;
for(i = j;str1[i] != '\0';i++)
{
if(str1[i] == str2[k])
{
temp = str1[k];
str1[k] = str1[i];
str1[i] = temp;
k++;
j++;
}
}
if(strcmp(str1,str2) == 0)
{
flag = 1;
}
return flag;
}
int main()
{
char str1[20] = {'a','c','b','a'};
char str2[20] = {'c','a','b','a'};
int flag = 0;
flag = judge_string(str1,str2);
if(flag == 1)
{
printf("Yes!\n");
}
else
{
printf("No!\n");
}
return 0;
}