字符串的个数,以及该组字符串。每个字符串以‘\n’结束。如果输入字符串为“stop”,也结束输入.
可能有多组测试数据,对于每组数据, 将输入的所有字符串按长度由小到大排序输出(如果有“stop”,不输出“stop”)。 根据输入的字符串个数来动态分配存储空间(采用new()函数)。每个字符串会少于100个字符。 测试数据有多组,注意使用while()循环输入。
5 sky is grey cold very cold stop 3 it is good enough to be proud of good it is quite good
cold very cold sky is grey good it is quite good it is good enough to be proud of
import java.util.ArrayList; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); scanner.nextLine(); ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { String line = scanner.nextLine(); if (line.equals("stop")) break; else list.add(line); } list.sort(Comparator.comparingInt(String::length)); for (String s : list) System.out.println(s); } }
#include <stdio.h> #include <string.h> typedef struct node { char a[100]; }Node; int cmp(Node *i,Node *j) { return strlen((*i).a)-strlen((*j).a); } int main() { int n,k; while(scanf("%d",&n)!=EOF) { getchar(); //scanf()用%c,%s空格键,Tab键,回车键结束一次输入,不会舍弃最后的回车符或空格或Tab(即还在缓冲区中),可使用getchar来吸收scanf()执行之后的换行符。 Node c[n]; for(k=0;k<n;k++) { gets(c[k].a); if(strcmp(c[k].a,"stop")==0)break; } qsort(c,k,sizeof(Node),cmp); for(int i=0;i<k;i++)puts(c[i].a); } }
# include<stdio.h> # include<string.h> # include<algorithm> using namespace std; struct E { char s[105]; int length; }; bool cmp(E a,E b) { return a.length<b.length; } int main() { int n,i; char stop[]="stop"; while(scanf("%d",&n)!=EOF) { getchar(); E *buf = new E[n]; for(i=0;i<n;i++) { gets(buf[i].s); int tmp = strcmp(stop,buf[i].s); if(tmp==0) n=i; buf[i].length=strlen(buf[i].s); } sort(buf,buf+n,cmp); for(i=0;i<n;i++) { puts(buf[i].s); } } return 0; }
#include <stdio.h> #include <string.h> typedef struct str{ char s[100]; int len; }str; int cmp(const void *a,const void *b){ return (*(str *)a).len- (*(str *)b).len; } int main(){ int n,i,j; while(scanf("%d ",&n)!=EOF){ str a[n]; for (i=0,j=0;i<n;i++) { gets(a[i].s); if(!strcmp(a[i].s,"stop")) break; j++; a[i].len=strlen(a[i].s); } qsort(a,j,sizeof(a[0]),cmp); for(i=0;i<j;i++){ printf("%s\n",a[i].s); } } }(•̀ᴗ•́)و
#include<stdio.h> (737)#include<string.h> int main() { int n=100,i,j;char a[100][100],b[100]; while(scanf("%d",&n)!=EOF) { getchar();//吸收gets前面的回车 for(i=0;i<n;i++)//1.输入 { gets(a[i]); if(strcmp(a[i],"stop")==0) { n=i;break;//去掉stop } } for(i=0;i<n-1;i++)//2.冒泡排序 for(j=0;j<n-1-i;j++) if(strlen(a[j])>strlen(a[j+1])) {//交换 strcpy(b,a[j]);strcpy(a[j],a[j+1]);strcpy(a[j+1],b); } for(i=0;i<n;i++) //3.输出 printf("%s\n",a[i]); } }
#include <bits/stdc++.h> using namespace std; int main(){ int n; map<int,string>m; cin>>n; cin.ignore(1024,'\n'); string *str=new string[n]; for(int i=0;i<n;i++){ getline(cin,str[i]); // cin.ignore(1024,'\n'); if(str[i]=="stop"){ break; } //cout<<str[i].size()<<endl; m[str[i].size()]=str[i]; } for(auto it=m.begin();it!=m.end();it++){ cout<<it->second<<endl; } delete[] str; return 0; }
#include<bits/stdc++.h> using namespace std; bool cmp(string s1,string s2){ return s1.length()<s2.length(); } int main(){ int n; while(cin>>n){ vector<string> vs; getchar(); for(int i=0;i<n;i++){ string str; getline(cin,str); if(str=="stop"){ break; } vs.push_back(str); } sort(vs.begin(),vs.end(),cmp); for(vector<string>::iterator it=vs.begin();it!=vs.end();it++){ cout<<*it<<endl; } } return 0; }
#include <stdio.h> #include <string.h> #include <algorithm> #define LEN 101 #define N 1000 using namespace std; typedef struct{ char str[LEN]; }STR; bool cmp(STR a, STR b) { return strlen(a.str)<strlen(b.str); } int main() { int num;//记录究竟输入了几个字符串 int n;//本打算输入几个字符串 STR a[N]; while(scanf("%d", &n)!=EOF) { num=0; getchar();//吸收回车 for(int i=0; i<n; i++) { gets(a[num++].str); if(strcmp(a[num-1].str, "stop")==0) { num--; break; } } sort(a, a+num, cmp); for(int i=0; i<num; i++) { puts(a[i].str); } } return 0; }
try: while 1: n = input() result = [] for i in xrange(n): s = raw_input() if s == 'stop': break result.append((s, len(s))) result = sorted(result, key=lambda x:x[1]) for j, k in result: print j except: pass
//是基于第二位大神写的改了冒泡算法哪里 public class MaoPao { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String str = scanner.nextLine(); int strNum = Integer.valueOf(str); int count = 0; String[] strList = new String[strNum]; for (int i = 0; i < strNum; i++) { strList[i] = scanner.nextLine(); count++; if (strList[i].equals("stop")) { strList[i] = ""; count--; break; } } //冒泡算法的另一种 //输入英文的个数,也是循环的个数 for (int i = 1; i < strList.length; i++) { //每次跟下一个比较,小的数提前,大的不变。 for (int j = 0; j < strList.length - i; j++) { if (strList[j].length() > strList[j+1].length()) { String temp = strList[j]; strList[j] = strList[j+1]; strList[j+1] = temp; } } } for (int i = 0; i < count; i++) { System.out.println(strList[i]); } } } }
#include<bits/stdc++.h> int main(){ int n,s; char b[100]={},a[100][100]={}; while(scanf("%d",&n)!=EOF){//输入n后会有一个残留的换行符 memset(b,0,sizeof(b)); memset(a,0,sizeof(a)); for(int i=0;i<=n;i++){//多循环一次以便吸收输入n后的换行符,也可用getchar gets(b); if(strcmp(b,"stop")==0) break; strcpy(a[strlen(b)],b); } for(int i=0;i<100;i++) if(a[i][0]!=0) puts(a[i]); } }//还是Hash
#include<iostream> #include<cstdio> #include<vector> #include<algorithm> using namespace std; bool cmp(string str1, string str2) { return str1.length() < str2.length(); } int main() { string str; vector<string> v; int n; while(cin >> n) { getchar(); // 吸收 cin 之后的回车 v.clear(); while(n--) { getline(cin, str); // str == stop if(str == "stop") { break; } v.push_back(str); } sort(v.begin(), v.end(), cmp); for(int i = 0; i < v.size(); ++i) { cout << v[i] << endl; } } return 0; }
def leng(s): a = [] for i in s: l = len(i) a.append(l) # print(a) return a def str_sort(s): flag = True a = leng(s) while flag: flag = False for i in range(1, len(a)): if a[i-1] > a[i]: a[i-1], a[i] = a[i], a[i-1] s[i-1], s[i] = s[i], s[i-1] flag = True return s while True: try: arr = [] n = int(input()) for i in range(n): a = input() if a == 'stop': break arr.append(a) res = str_sort(arr) res = '\n'.join(res) print(res) except: break
import java.util.Scanner; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; /* * 注意: * 只要nextInt,next,nextdouble方法在nextLine前面时, * 就会跳过nextline的输入nextInt()是以换行符或者回 * 车结束的,表示输入结束。而换行符 ” /n“,回车符 也是 * 一个字符.nextLine()会把前者的换行符或者回车一个字符 * 输入,所以nextLine不是没有录入值,而是直接把换行符或 * 者回车符录入,直接结束输入,所以nextLine不需要再从控制台中录入。 */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { int n = scanner.nextInt(); scanner.nextLine(); // 消耗掉换行符 //设置一个map用来存储字符串和字符串的长度 Map<String, Integer> myMap = new TreeMap<String, Integer>(); for (int i = 0; i < n; i++) { String str = scanner.nextLine(); if (str.equals("stop")) { break; } int length = str.length(); myMap.put(str, length); } List<Map.Entry<String, Integer>> myList = new ArrayList<>(myMap.entrySet()); myList.sort(Map.Entry.comparingByValue()); Map<String, Integer> sortedMap = new LinkedHashMap<String, Integer>(); for(Map.Entry<String , Integer> entry : myList) { sortedMap.put(entry.getKey(), entry.getValue()); } for(Map.Entry<String, Integer> entry: sortedMap.entrySet()) { System.out.println(entry.getKey()); } } } }
#include<iostream> #include<string> #include<algorithm> #include<vector> using namespace std; bool compare(string a,string b){ return a.size()<b.size(); } int main(){ int N; char gap; while( scanf("%d%c",&N,&gap)!=EOF){ vector<string> vec; scanf("%d%c",&N,&gap); for(int i=0;i<N;i++){ string str; getline(cin,str); if(str=="stop") break; vec.push_back(str); } sort(vec.begin(),vec.end(),compare); for(int j=0;j<vec.size();j++){ cout<<vec[j]<<endl; } } }
#include <algorithm> #include <cstdio> #include <iostream> #include <string> #include <vector> using namespace std; //字符串比较函数(用于排序) bool compare(const string& str1, const string& str2) { return str1.length() < str2.length(); } int main() { int n; while (cin >> n) { getchar(); //吃掉空格 vector<string>arr; while (n--) { string str; getline(cin, str); if (str == "stop") { break; } arr.push_back(str); } sort(arr.begin(), arr.end(), compare); for (const auto& str : arr) { cout << str << endl; } } return 0; }