###実現したいこと
入力によって得られたn桁の数列xの組み合わせのうち数値として最小のものをresultとして出力するプログラムを作成しています。※先頭の位が0になってはならず(012 etc)、桁数の制限はないものとします
入出力例) x=201 result=102 | x=987654321 reslut=123456789
###本題
入力で得られる数列の桁数が決まっていないので、「文字列で数列を受け取ってリストや配列に変換して」と回りくどい方法(下記コード)をとっているのですが、
数列を受け取り、最小に並び替えるだけならint型やlong型でもできるのでしょうか。
ご存じであれば、方法等も併せてご教示いただけないでしょうか。
java
1import java.util.ArrayList; 2import java.util.Collections; 3import java.util.Scanner; 4 5public class App { 6 7 public static void main(String[] args) { 8 Scanner scanner = new Scanner(System.in); 9 String str = scanner.nextLine(); 10 ArrayList<Integer> num = new ArrayList<Integer>(); 11 ArrayList<Integer> result = new ArrayList<Integer>(); 12 String[] Str = str.split(""); 13 ArrayList<String> lines = new ArrayList<>(); 14 Collections.addAll(lines, Str); 15 for (int i = 0; i < lines.size(); i++) { 16 try { num.add(Integer.parseInt(lines.get(i))); 17 }catch (NumberFormatException e) {} 18 } 19 Collections.sort(num); 20 System.out.println(num); 21 int flag = 0; 22 for(int i=0;i<num.size();i++){ 23 if(num.get(i)!=0&&flag==0){ 24 result.add(num.get(i)); 25 flag = 1; 26 }else if(num.get(i)==0&&flag==1){ 27 //先頭以外が0の場合の処理 28 }else { 29 //他の数値の処理 30 } 31 } 32 System.out.println(result); 33 } 34}
回答1件
あなたの回答
tips
プレビュー