2014年7月华为校招机试第一题答案另解--Java版本

来源:互联网 发布:程序设计基础(c语言) 编辑:程序博客网 时间:2024/04/28 12:11
//上午看到<span class="link_title" sizcache="27" sizset="36"><a target=_blank href="http://blog.csdn.net/lpp0900320123/article/details/38780723">[C/C++]2014年7月华为校招机试真题(一) </a>这篇文章,用Java重写了第一题的解法。也就仅仅是能实现功能,关于效率还没有多想……先拿上来分享一下~</span>
import java.util.ArrayList;import java.util.Scanner;
//题目://按要求分解字符串,输入两个数M,N;M代表输入的M串字符串,//N代表输出的每串字符串的位数,不够补0。例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”public class Huawei_01 {/* * 字符串数 */private static int M = 0;/* * 字符串位数 */private static int N = 0;//储存输入的字符串ArrayList<String> in = new ArrayList<String>(); ArrayList<String> result = new ArrayList<String>();Scanner sc = new Scanner(System.in);public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入串数:");M = sc.nextInt();System.out.println("请输入位数: ");N = sc.nextInt();Huawei_01 hw = new Huawei_01(M, N);}public Huawei_01(int M , int N) {this.M = M;this.N = N;this.read();this.cut();this.write();}private void read(){for(int i = 0; i<M; i++){int j = i+1;System.out.println("输入第"+j+"个字符串:");in.add(sc.nextLine());}}private void cut(){System.out.println("输入完毕,共有"+in.size()+"个字符串。");for(int j = 0; j<in.size() ; j++){//字符串长度小于等于N时if(in.get(j).length()<=N){for(int k = in.get(j).length(); k < N ; k++){String temp =in.get(j);in.set(j,temp+"0");}result.add(in.get(j));}//字符串长度大于N时else{String tempLongerInN = "";String tempLongerOutN = "";for(int indexOfStrIn = 0; indexOfStrIn < N ; indexOfStrIn++){ tempLongerInN = tempLongerInN+(in.get(j).charAt(indexOfStrIn));}for(int indexOfStrOut = N; indexOfStrOut < in.get(j).length(); indexOfStrOut++){tempLongerOutN = tempLongerOutN+(in.get(j).charAt(indexOfStrOut));}in.add(j+1, tempLongerOutN);result.add(tempLongerInN);}}}private void write(){for(String s : result){System.out.print("\""+s+"\",");}}}

0 0
原创粉丝点击