删除重复字符算法详解及代码
思路
- 创建一个数组,默认所有元素都是0;
- 遍历字符串的每个字符;
- 判断当前字符是否已经出现过,如果没有出现过,则将数组中对应位置设为0,如果当前字符已经出现过,则将数组中对应位置设为1;
- 遍历数组把值为0对应位置的字符加入到结果字符串中;
- 返回结果字符串。
代码
string removeRepeat(string s)
{
vector<int> a(100,0);
string result;
int i, j;
for (i = 0; i < s.size()-1; ++i)
{
for (j = i + 1; j < s.size(); ++j)
{
if (s[i] == s[j])
a[j] = 1;
}
}
for (i =0; i<s.size(); ++i)
{
if (a[i] == 0)
result += s[i];
}
return result;
}
排序字符串算法详解及代码
思路
使用了冒泡排序,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数组的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。
代码
void sortString(string& s)
{
int i, j;
for (i = 0; i < s.size()-1; ++i)
{
for (j = 0; j < s.size()-i-1; ++j)
{
if (s[j] > s[j+1])
{
char temp = s[j];
s[j] = s[j+ 1];
s[j + 1] = temp;
}
}
}
}
整体代码
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string removeRepeat(string s)
{
vector<int> a(100,0);
string result;
int i, j;
for (i = 0; i < s.size()-1; ++i)
{
for (j = i + 1; j < s.size(); ++j)
{
if (s[i] == s[j])
a[j] = 1;
}
}
for (i =0; i<s.size(); ++i)
{
if (a[i] == 0)
result += s[i];
}
return result;
}
void sortString(string& s)
{
int i, j;
for (i = 0; i < s.size()-1; ++i)
{
for (j = 0; j < s.size()-i-1; ++j)
{
if (s[j] > s[j+1])
{
char temp = s[j];
s[j] = s[j+ 1];
s[j + 1] = temp;
}
}
}
}
int main()
{
string s;
cin >> s;
string result = removeRepeat(s);
cout <<"result:" << result << endl;
sortString(result);
cout << "result:" << result << endl;
return 0;
}
运行效果
总结
文笔不好请见谅,要是有问题欢迎在评论区留言或者私信我,也欢迎指出我的不足,感谢观看。
标签:字符,string,temp,++,C++,int,源码,详解,size From: https://blog.csdn.net/2302_82012065/article/details/144174660