【发布时间】:2021-07-28 00:25:22
【问题描述】:
这是给定的问题: 给定一个字符串 S,您必须按字典顺序对字符串的字符进行排序。 注意 - 不要使用内置的排序功能。
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main()
{
//write your code here
int t;
cin>>t;
while(t--)
{
int n,temp,min,i,j;
string s,text;
cin>>s;
n=s.length();
int arr[n];
for(int i=0;i<n;i++)
{
arr[i]=int(s[i]);
}
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i]<arr[j])
{
temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
for(int l=0;l<n;l++)
{
text[l]=arr[l];
cout<<text[l];
}
cout<<endl;
}
return 0;
}
输入
1
算法
输出
特罗姆里加
【问题讨论】:
-
提示:使用
std::vector和push_back()而不是像int arr[n]这样的非标准可变长度数组。 -
s[i]-0应该做什么?这是对数组中的单个字符进行排序吗?如果是这样,solved problem。只是std::sort字符串本身。简单。完成。 -
text是一个空字符串,除text[0]之外的任何字符串都超出范围。再一次,你做的比必要的要多得多。而不是从arr[l]复制到text[l]然后循环打印text[l],只需执行std::cout << arr; -
你为什么用那个代替对
sort的调用?之前的代码太复杂了,现在更糟了……
标签: c++ string sorting for-loop nested-loops