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

//上午看到<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+"\",");
		}	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值