在一行上输入一个长度为
,仅由大小写字母和数字构成的字符串
,代表输入的字符串。
在一行上输出一个字符串
,代表排序后的答案。
Ihave1nose2hands10fingers
0112Iaadeeefghhinnnorsssv
//我是忆水寒
//我来吐槽一下,少一句cout<<endl;代码就是没法提交。
//正确的参考代码如下:
#include<iostream>
#include<cstring>
using namespace std;
void count_String(char* str)
{
if(NULL == str)
{
return ;
}
int len = strlen(str);
int s[256] = {0};//做一个简易哈希表
for(int i=0;i<len;i++)
{
s[int(str[i])]++;
}
for( int i = 0; i < 256; i++ )
{
while(s[i] != 0)
{
cout<<char(i);
s[i] = s[i]-1;
}
}
cout<<endl;
}
int main()
{
char str[1024];
while(gets(str))
{
count_String(str);
}
return 0;
}
//计数法
#include <stdio.h>
#include <string.h>
//0~9 0x30~0x39 A~Z 0x41~0x5A a~z 0x51~0x7A
const char scaii_list[3][2] = {{0x30,0x39},{0x41,0x5A},{0x61,0x7A}};
int main(){
char in_str[1000] = {0};
while (scanf("%s", in_str)!= EOF){
//scanf("%s",in_str);
char out_list[0x7A+1] = {0};
int str_len = strlen(in_str);
for(int i = 0; i < str_len; i++){
out_list[in_str[i]]++;
}
int index = 0;
while(index < 3){
for(int i = scaii_list[index][0]; i <= scaii_list[index][1]; i++){
for(int j = 0; j < out_list[i]; j++){
printf("%c",i);
}
}
index++;
}
printf("\n");
}
return 0;
} import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNextLine()) {
char[] arr = sc.nextLine().toCharArray();
Arrays.sort(arr);
Arrays.asList(arr).stream().forEach(System.out::println);
}
}
} import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String input = sc.nextLine();
if ("".equals(input)) {
continue;
}
char[] arr = input.toCharArray();
Arrays.sort(arr);
System.out.println(String.valueOf(arr));
}
}
} import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String line = scanner.nextLine();
List<Character> characterList = new ArrayList<>();
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
characterList.add(ch);
}
characterList.sort(Comparator.comparingInt(o -> o));
StringBuilder stringBuilder = new StringBuilder();
characterList.forEach(stringBuilder::append);
System.out.println(stringBuilder.toString());
}
}
} // 方法2
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String line = scanner.nextLine();
char[] charArr = line.toCharArray();
Arrays.sort(charArr);
System.out.println(String.valueOf(charArr));
}
} #include <bits/stdc++.h>
using namespace std;
int main(){
char str[1000]={0};
while(EOF != scanf("%s",str)){
int a[128] = {0};
int k = 0;
while(str[k]!='\0') ++a[str[k++]];
for(int i=0;i < 128;++i)
if(a[i] != 0)
for(int j=0;j < a[i];j++)
printf("%c",(char)i);
printf("\n");
memset(str,0, 1000);
}
return 0;
} #include <iostream>
(720)#include <string>
#include <algorithm>
using namespace std;
int main() {
string str;
while ( getline (cin, str) ) {
sort( str.begin(), str.end() );
cout << str << endl;
}
return 0;
} #include<iostream>
#include<cstring>
using namespace std;
int main(){
int asc[128];
char ch[1025];
while(cin>>ch){
for(int i=0;i<62;i++)
asc[i]=0;
for(int i=0;i<strlen(ch);i++){
if(ch[i]<='9'&&ch[i]>='0')
asc[ch[i]-'0']++;
else if(ch[i]<='Z'&&ch[i]>='A')
asc[ch[i]-'A'+10]++;
else if(ch[i]<='z'&&ch[i]>='a')
asc[ch[i]-'a'+36]++;
}
for(int i=0;i<62;i++){
if(asc[i]!=0){
if(0<=i&&i<=9)
for(int j=0;j<asc[i];j++)
cout<<(char)(i+'0');
if(10<=i&&i<=35)
for(int j=0;j<asc[i];j++)
cout<<(char)(i-10+'A');
if(36<=i&&i<=61)
for(int j=0;j<asc[i];j++)
cout<<(char)(i-36+'a');
}
}
cout<<endl;
}
} #include<iostream>
#include<sstream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
while(cin>>str)
{
sort(str.begin(),str.end());
cout<<str<<endl;
}
return 0;
}
使用algorithm库中的sort函数,直接就会排序号,因为需要升序排列,所以可以加最后的判断函数,也可以不加,默认就为升序。但是在sort函数中调用比较函数的时候不需要加括号。
import java.util.*;
import java.io.*;
public class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
sortString(scanner.nextLine());
}
}
public static void sortString (String input) {
char[] array = input.toCharArray();
Arrays.sort(array);
for (char c : array) {
System.out.print(c);
}
System.out.println();
}
} //char数组存放数据,直接用Arrays对数组进行排列
import java.util.Scanner;
import java.util.Arrays;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
char[] ch = sc.nextLine().toCharArray();
Arrays.sort(ch);
for(int i=0;i<ch.length;i++){
System.out.print(ch[i]);
}
System.out.println();
}
}
}
import java.util.Scanner;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String line = sc.nextLine();
char[] chars = line.toCharArray();
Arrays.sort(chars);
StringBuffer sb = new StringBuffer();
sb.append(chars);
System.out.println(sb.toString());
}
}
} #include <stdio.h>
#include <string.h>
static char buffer[1025];
void swap(char *a, char *b)
{
char tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
while(EOF != scanf("%s", buffer)) {
int i, j;
int len = strlen(buffer);
for(i = len-1; i > 0; i--)
for(j = 1; j <= i; j++)
if(buffer[j-1] > buffer[j])
swap(buffer+j-1, buffer+j);
printf("%s\n", buffer);
}
return 0;
}
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
cin >> str;
char buf[123] = { 0 };
for (int i = 0; i < str.size(); i++)
buf[str[i]]++;
for (int j = 47; j < 123; j++)
{
while (buf[j] != 0)
{
printf("%c", j);
buf[j]--;
}
}
return 0;
}
用下标来存出现的次数,最大下标为122。
思路正确,VS2015可以正确编译与输出正确答案,但是本题网页输出有误,不知道为什么!
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string str = "";
while(cin>>str)
{
sort(str.begin(),str.end());//有点傻(⊙_⊙)?
cout<<str<<endl;
}
return 0;
}