输入第一行为字符串个数n(n ≤ 100) 接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成
如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically",
如果根据长度排列而不是字典序排列输出"lengths",
如果两种方式都符合输出"both",否则输出"none"
3 a aa bbb
both
/* 字典序排序,字符串大小排序 */ #include<iostream> #include<string> #include<vector> using namespace std; vector<string>vec; //按照字典序排序 bool lexicographically(){ int i=0; string s; while((i+1) < vec.size()){ if(vec[i].compare(vec[i+1]) >0) return 0; i++; } return 1; } //按照字符串大小排序 bool Lenths(){ int i=0; while((i+1) <vec.size() ){ if(vec[i+1].size() < vec[i].size() ) return 0; i++; } return 1; } int main(){ string s; int n,i=0; bool b1,b2; cin>>n; while(i < n){ cin>>s; vec.push_back(s); i++; } b1=lexicographically(); b2=Lenths(); if(b1 && b2) cout<<"both"; else if(b1 && !b2) cout<<"lexicographically"; else if(!b1 && b2) cout<<"lengths"; else cout<<"none"; return 0; }
import java.util.Scanner; /** * Created by Genge on 2016-08-20. */ public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { int n = scanner.nextInt(); String[] words = new String[n]; for (int i = 0; i < n; i ++) { words[i] = scanner.next(); } System.out.println(validate(words)); } scanner.close(); } private static String validate(String[] words) { boolean isABC = isAbc(words); boolean isLEN = isLen(words); if (isABC && isLEN) { return "both"; } if (isABC) { return "lexicographically"; } if (isLEN) { return "lengths"; } return "none"; } private static boolean isLen(String[] words) { boolean result = true; for (int i = 1; i < words.length; i++) { if (words[i].length() <= words[i - 1].length()) { result = false; break; } } return result; } private static boolean isAbc(String[] words) { boolean result = true; for (int i = 1; i < words.length; i++) { if (words[i].compareTo(words[i - 1]) <= 0) { result = false; break; } } return result; } }
#include<string> #include<iostream> #include<algorithm> using namespace std; bool cmp(string a,string b){ return a.length()<b.length(); } bool equal(string a[],string b[],int N){ for(int i=0;i<N;i++) if(a[i]!=b[i]) return false; return true; } string a[105],b[105],c[105]; int main(){ int i,n; for(cin>>n,i=0;i<n;i++) cin>>a[i],b[i]=c[i]=a[i]; sort(b,b+n),sort(c,c+n,cmp); if(equal(a,b,n)&&equal(a,c,n)) printf("both"); if(equal(a,b,n)&&(!equal(a,c,n))) printf("lexicographically"); if((!equal(a,b,n))&&equal(a,c,n)) printf("lengths"); if((!equal(a,b,n))&&(!equal(a,c,n))) printf("none"); }
import java.util.Scanner; public class StringUtil{ //两种排序方法 public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int n = Integer.valueOf(in.nextLine()); String str[] = new String[n+1]; for(int i=1; i<=n; i++){ str[i] = in.nextLine(); } boolean zd = iszd(str); boolean cd = iscd(str); if(zd && cd) System.out.println("both"); else if(zd) System.out.println("lexicographically"); else if(cd) System.out.println("lengths"); else System.out.println("none"); } } //字典判断 public static boolean iszd(String[] str){ for(int i=1; i<str.length-1; i++){ if(str[i].compareTo(str[i+1]) >= 0) return false; } return true; } //字符串长度判断 public static boolean iscd(String[] str){ for(int i=1; i<str.length-1; i++){ if(str[i].length() >= str[i+1].length()) return false; } return true; } }
#include<iostream> #include<string.h> using namespace std; int main() { int n,i,j; int x=0,y=0; char a[100][100]; cin>>n; for(i=0;i<n;i++){ cin>>a[i]; } for(i=0;i<n-1;i++){ if(strlen(a[i])>strlen(a[i+1])){ x=1; break; } } for(i=0;i<n-1;i++){ if(strcmp(a[i],a[i+1])>0){ y=1; break; } } if(x==1 && y==0) cout<<"lexicographically"<<endl; else if(x==0 && y==1) cout<<"lengths"<<endl; else if(x==0 && y==0) cout<<"both"<<endl; else cout<<"none"<<endl; return 0; }
#include<iostream> #include<string> #include<vector> using namespace std; int main() { int n; while(cin>>n) { bool flag1=0,flag2 = 0; vector<string> str(n); for(auto &i:str) cin>>i; for(int i=1;i<str.size();i++) { if(flag1==0&&str[i-1]>str[i]) flag1 =1; if(flag2==0&&str[i-1].size()>str[i].size()) flag2 = 1; if(flag1&&flag2) break; } if(flag1==0&flag2==0) cout<<"both"<<endl; else if(flag1==0) cout<<"lexicographically"<<endl; else if(flag2==0) cout<<"lengths"<<endl; else cout<<"none"<<endl; } return 0; }
import java.util.*; public class Main{ public static boolean isLen(String[] strings){ int length=strings[0].length(); for(int i=1;i<strings.length;i++){ if(length<=strings[i].length()){ length=strings[i].length(); } else{ return false;//不是根据长度排的 } } return true; } public static boolean abc(String[] strings){ ArrayList<String> list=new ArrayList<>(); for (int i = 0; i < strings.length; i++) { list.add(strings[i]); } Collections.sort(list); String[] strings2=new String[strings.length]; for (int i = 0; i < strings2.length; i++) { strings2[i]=list.get(i); } for (int i = 0; i < strings2.length; i++) { if (strings[i]!=strings2[i]) { return false;//不是根据字母顺序 } } return true;//根据字母顺序 } public static void main(String args[]){ Scanner s=new Scanner(System.in); while(s.hasNext()){ int n=s.nextInt(); String[] strings=new String[n]; for(int i=0;i<n;i++){ strings[i]=s.next(); } if(isLen(strings)&abc(strings)){ System.out.println("both"); } else if(isLen(strings)==false&abc(strings)==true){ System.out.println("lexicographically"); } else if(isLen(strings)==true&abc(strings)==false){ System.out.println("lengths"); } else{ System.out.println("none"); } } } }
import java.util.*; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); String[] str = new String[n]; for (int i = 0; i < n; i++) { str[i] = in.next(); } if (lexicographically(str)){ if (lengths(str)){ System.out.println("both"); }else { System.out.println("lexicographically"); } }else { if (lengths(str)){ System.out.println("lengths"); }else { System.out.println("none"); } } } public static boolean lexicographically(String[] str){ if (str.length <= 1){ return true; } for (int i = 1; i < str.length; i++) { if (str[i-1].compareTo(str[i]) > 0){ return false; } } return true; } public static boolean lengths(String[] str){ if (str.length <= 1){ return true; } for (int i = 1; i < str.length; i++) { if (str[i-1].length() > str[i].length()){ return false; } } return true; } }
#include<iostream> using namespace std; #include<string> #include<vector> int main() { vector<string> vs; string s; int n;cin>>n; vs.resize(n); for(auto& e:vs) { cin>>e; } bool lsort = true; bool dsort = true; for(int i=0;i<n-1;++i) { if(vs[i].length()>vs[i+1].length()) { lsort = false; break; } } for(int i=0;i<n-1;++i) { if(vs[i]>vs[i+1]) { dsort = false; break; } } if(lsort&&dsort) cout<<"both"<<endl; else if(lsort||dsort){ if(lsort) cout<<"lengths"<<endl; if(dsort) cout<<"lexicographically"<<endl; } else cout<<"none"<<endl; return 0; }
#include<iostream> #include<string> using namespace std; int main() { int n; cin >> n; string str[n]; for (int i = 0; i < n; ++i) { cin >> str[i]; } bool p1 = true; bool p2 = true; for (int j = 1; j < n; ++j) { if (str[j - 1] > str[j]) { p1 = false; } if (str[j - 1].size() > str[j].size()) { p2 = false; } } string res; if (p1 && p2) { res = "both"; } else if (p1 && !p2) { res = "lexicographically"; } else if (!p1 && p2) { res = "lengths"; } else { res = "none"; } cout << res << endl; return 0; }
#include <iostream> #include <string> #include <vector> using namespace std; int main() { int nCount; while (cin >> nCount) { vector<string> vecInput; vecInput.resize(nCount); for (int i = 0; i < nCount; ++i) cin >> vecInput[i]; bool isLex = true, isLength = true; for (int i = 1; i < nCount; ++i) { int nSize1 = vecInput[i - 1].size(), nSize2 = vecInput[i].size(), nIndex = 0; while (nIndex < nSize1 && nIndex < nSize2) { if (vecInput[i - 1][nIndex] > vecInput[i][nIndex]) { isLex = false; break; } else if (vecInput[i - 1][nIndex] < vecInput[i][nIndex]) break; ++nIndex; } if (nIndex < nSize1 && nIndex == nSize2) isLex = false; if (isLex == false) break; } for (int i = 1; i < nCount; ++i) { if (vecInput[i].size() < vecInput[i - 1].size()) { isLength = false; break; } } if (isLex && isLength) cout << "both" << endl; else if (isLex) cout << "lexicographically" << endl; else if (isLength) cout << "lengths" << endl; else cout << "none" << endl; } }
|
//每次和前一个比就行了 不需要数组 public static void main(String[] args){ Scanner scanner = new Scanner(System.in); Integer n = Integer.parseInt(scanner.nextLine()); boolean lexicographically = true; boolean lengths = true; String pre = ""; for(int i=0;i<n;i++){ String s = scanner.nextLine(); lengths = lengths&&s.length()>=pre.length(); lexicographically = lexicographically&&s.compareTo(pre)>=0; pre = s; } if(lexicographically&&lengths) System.out.println("both"); else if(lexicographically) System.out.println("lexicographically"); else if(lengths) System.out.println("lengths"); else System.out.println("none"); }
import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); List<String> l=new ArrayList<String>(); int aa=s.nextInt(); while(s.hasNext()) { String m=s.nextLine(); l.add(m); } if((isABC(l))&&(isLength(l))) { System.out.println("both"); }else if((isABC(l)==false)&&(isLength(l)==true)) { System.out.println("lengths"); } else if((isABC(l)==true)&&(isLength(l)==false)) { System.out.println("lexicographically"); } else if((isABC(l)==false)&&(isLength(l)==false)) { System.out.println("none"); } } public static boolean isABC(List al) { boolean f=true; for(int i=0;i<al.size();i++) { if(i+1<al.size()) { String s1=(String)al.get(i); String s2=(String)al.get(i+1); if(s1.compareTo(s2)<0) { continue; } else { f=false; } } } return f; } public static boolean isLength(List al) { boolean f=true; for(int i=0;i<al.size();i++) { if(i+1<al.size()) { String s1=(String)al.get(i); String s2=(String)al.get(i+1); if(s2.length()-s1.length()>0) { continue; } else { f=false; } } } return f; } }
import java.util.Scanner;
public class TwoSort2 {
public static boolean bol = true;
public static boolean abc = true;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int n = Integer.parseInt(sc.nextLine());
String[] str = new String[n];
for (int i = 0; i < n; i++) {
str[i] = sc.nextLine();
}
getResult(str);
if (abc && bol) {
System.out.println("both");
} else if (abc && !bol) {
System.out.println("lexicographically");
} else if (!abc && bol) {
System.out.println("lengths");
} else
System.out.println("none");
}
}
public static void getResult(String[] arr) {
int x = 0;
char a, b;
for (int i = 0; i < arr.length; i++) {
int y = 0;
boolean j = true;
if (x < arr[i].length()) {
x = arr[i].length();
} else {
bol = false;
}
if (i < arr.length - 1) {
while (j) {
if (y < arr[i].length() && y < arr[i + 1].length()) {
a = arr[i].charAt(y);
b = arr[i + 1].charAt(y);
if (a == b) {
j = true;
y++;
} else if (a > b) {
abc = false;
j = false;
} else if (a < b) {
j = false;
}
}
else if(y >= arr[i].length() && y<arr[i+1].length()) {
j=false;
}
else if(y <= arr[i].length() && y >= arr[i + 1].length()) {
abc = false;
j = false;
}
}
}
}
}
}
#include <iostream> using namespace std; string s[110]; int main() { int n; cin>>n>>s[0]; string t = s[0]; int l = t.length(); bool flag1 = true, flag2 = true; for(int i=1;i<n;i++) { cin>>s[i]; if(s[i] < t) flag1 = false; t = s[i]; if(s[i].length() < l) flag2 = false; l = t.length(); } if(flag1 && flag2) cout<<"both"<<endl; else if(flag1 && !flag2) cout<<"lexicographically"<<endl; else if(!flag1 && flag2) cout<<"lengths"<<endl; else cout<<"none"<<endl; return 0; }
#include <iostream> #include <string> #include <vector> using namespace std; int main(){ int n,notLen=0,notLex=0; cin>>n; string s; vector<string> vs; for(int i=0;i<n;i++){ cin>>s; vs.push_back(s); } for(int i=0;i<vs.size()-1;i++){ if(vs[i].compare(vs[i+1])>0){ notLex=1; } if(vs[i].size()>vs[i+1].size()){ notLen=1; } if(notLen==1&¬Lex==1) break; } if(notLex==1&¬Len==1){ cout<<"none"<<endl; }else if(notLex==1&¬Len==0){ cout<<"lengths"<<endl; }else if(notLex==0&¬Len==1){ cout<<"lexicographically"<<endl; }else if(notLex==0&¬Len==0){ cout<<"both"<<endl; } return 0; }