0
已解决
黄依成
中级天翼
中级天翼
#include<iostream>
#include<string>
using namespace std;
int main(){
string s;
cin>>s;
for(int i=0;i<s.size()-1;i++){
for(int j=0;j<s.size()-i-1;j++){
if(s[j]>s[j+1]){
swap(s[j],s[j+1]);
}
}
}
if(s[0]==0){
for(int i=1;i<s.size();i++){
cout<<s[i];
}
}
else{
for(int i=0;i<s.size();i++){
cout<<s[i];
}
}
return 0;
}
70分!!!
2
已采纳
王子健
初级天翼
初级天翼
你的答题思路是莫有问题滴,但是你忽略了一个重点,也是一个难点:
题目最后说了
虽然你注意到了,并且也判断了,但没有对。
是因为你的判断不应该是下面这段:
你不能只判断第一位,如果第一位删除依旧是0呢?
如这个样例:40000
那么就算你判断了,也只是第一位,最后的结果是:
0004
你依旧没有把0都删除
那么解决办法是什么?我来跟你说我的思路:
因为你不知道要删除几次0,所以你要使用while循环删除,每次删除一个,直到这个字符不为0,这个条件就是在while循环里判断的
如:int t = 0;
while (s[t] != '0')
这样一个个判断,判断到这一位不是0就可以了。
注意 : 如果这个数本身就是0,就需要特判:
if (s.size() == 1 && s == '0')
cout << '0';
如果改过这两点就可以AC了
望采纳,谢谢!!!
0
0