//上午看到<span class="link_title" sizcache="27" sizset="36"><a target=_blank href="http://blog.youkuaiyun.com/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+"\",");
}
}
}