【Java空格分割(StringTokenizer)+字符串处理+排序】HDU-1106 排序
程序员文章站
2022-04-06 13:50:15
...
注解
1、Java做此题比较简单,先把所有5用空格替换,然后用StringTokenizer(默认分隔符就是空格),直接分出所有数字。对其调用sort函数排序就可以了。
2、如果非要用C++做,也是一样的步骤,只不过StringTokenizer实现的功能需要自己实现。尤其需要注意多个5连续出现的情况。
代码(Java)
import java.util.Arrays;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String s = sc.nextLine();
s = s.replaceAll("5", " ");
StringTokenizer st = new StringTokenizer(s);
int[] a = new int[st.countTokens()];
int i = 0;
while(st.hasMoreTokens()){
a[i++] = Integer.parseInt(st.nextToken());
}
Arrays.sort(a);
for(int j=0; j<a.length-1; j++){
System.out.print(a[j] + " ");
}
System.out.println(a[a.length-1]);
}
}
}
代码(C++)
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> v;
int stringToInt(string t) {
stringstream ss;
ss<<t;
int tmp;
ss>>tmp;
return tmp;
}
void add(string sub) {
int num = stringToInt(sub);
v.push_back(num);
}
int main() {
string s;
while(cin>>s) {
v.clear();
for(int i=0; i<s.length(); i++) {
if(s.at(i)=='5') {
s[i] = ' ';
}
}
int start = 0;
for(int i=0; i<s.length(); i++) {
if(s.at(i)==' ') {
if(start!=i) {
string sub = s.substr(start, i-start);
add(sub);
}
start = i+1;
}
}
if(start<s.length()) {
string sub = s.substr(start, s.length()-start);
add(sub);
}
sort(v.begin(), v.end());
cout<<v.at(0);
for(int i=1; i<v.size(); i++) {
cout<<" "<<v.at(i);
}
cout<<endl;
}
return 0;
}