2015届华为校园招聘机试题

第二题:去除重复字符并排序

运行时间限制:无限制

内容限制:       无限制

输入:              字符串

输出:              去除重复字符并排序的字符串

样例输入:       aabcdefff

样例输出:       abcdef

<span style="font-size:14px;">import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

public class RemoveDuplicate {
	
	public static void main(String[] args) throws Exception {
		
		
		//利用map中键值对唯一,并且key不能重复
		
		/*String str = "aabcdefff1233";
		Map<String,Object> map = new HashMap<String,Object>();
		for(int i = 0; i<str.length();i++){
			Character  ch = str.charAt(i);
			String s = ch.toString();
			map.put(s, ch);
		}
		StringBuffer buff = new StringBuffer();
		StringBuffer buff1 = new StringBuffer();
		for(Entry<String, Object> entry:map.entrySet()){
			  String key = entry.getKey();  
			  System.out.print(entry.getValue());
			  Object obj = entry.getValue();
			  buff.append(obj);
		}
		System.out.println("输出去除重复后:" + buff.toString());
		String charString = buff.toString();
	    char[] ch = charString.toCharArray();
	    Arrays.sort(ch);
	    for(char c:ch){
	    	System.out.println("排序后字符:" + c);
	    	buff1.append(c);
	    }
	   System.out.println("排序后字符串为:" + buff1.toString());
		*/
		
		
		BufferedReader in  =new BufferedReader(new InputStreamReader(System.in)); 
		System.out.println("请输入字符串:");
		String str = in.readLine();
		/**
		 * 1、去除重复,利用map中的键值对唯一和key值不能重复特性
		 * 2、排序,利用Arrays中的sort方法进行排序
		 */
		Map<String,Character> map = new HashMap<String,Character>();
		//将字符串循环,将每一个值放入map中
		for(int i = 0; i<str.length();i++){
			Character  character = str.charAt(i);
			String st = character.toString();
			map.put(st, character);
		}
		//将map中的值取出来并恢复为字符串
		StringBuffer buff = new StringBuffer();
		for(Entry<String,Character> entry:map.entrySet()){
			 buff.append(entry.getValue());
		}
		System.out.println("去除重复后字符串:" + buff.toString());
		String charString = buff.toString();
	    char[] ch = charString.toCharArray();
	    //利用Arrays特性
	    Arrays.sort(ch);
	    StringBuffer strBuff = new StringBuffer();
	    for(char c:ch){
	    	System.out.println("排序后字符:" + c);
	    	strBuff.append(c);
	    }
	    System.out.println("排序后字符串为:" + strBuff.toString());
		
	}
}</span>
//利用set集合的不重复性质
String str = "aabcdefff1233";  
Set<Object> set = new HashSet<Object>();
		for(int i = 0;i<str.length();i++){
			Character c = str.charAt(i);
			set.add(c);
		}
		Object[] obj = set.toArray();
		Arrays.sort(obj);
		 StringBuffer strBuff = new StringBuffer();
		for(Object o :obj){
			strBuff.append(o);
		}
		
		System.out.println("排序后:"+strBuff.toString());

第一题:拼音转数字
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配

运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234

import java.io.BufferedReader;
import java.io.InputStreamReader;


public class PinYin {

	public static void main(String[] args) throws Exception {
		BufferedReader in  =new BufferedReader(new InputStreamReader(System.in)); 
		System.out.println("请输入:");
		String str = in.readLine();
		
		/**
		 * 1、判断是否是英文字母
		 * 2、判断组合在一起是否是阿拉伯数字的拼音
		 */
		//String[] number = {"yi","er","san","si","wu","liu","qi","ba","jiu"};
		StringBuffer buff = new StringBuffer();
		StringBuffer strBuff = new StringBuffer();
		int num = 0;
		
		for(int i = 0;i<str.length();i++){
			if(strBuff == null){
				strBuff = new StringBuffer();
			}
			char c = str.charAt(i);
			strBuff.append(c);
				switch(strBuff.toString()){
					case "yi":
						num = 1;
						strBuff = null;
						buff.append(num);
						break;
					case "er":
						num = 2;
						strBuff = null;
						buff.append(num);
						break;
					case "san":
						num = 3;
						strBuff = null;
						buff.append(num);
						break;
					case "si":
						num = 4;
						strBuff = null;
						buff.append(num);
						break;
					case "wu":
						num = 5;
						strBuff = null;
						buff.append(num);
						break;
					case "liu":
						num = 6;
						strBuff = null;
						buff.append(num);
						break;
					case "qi":
						num = 7;
						strBuff = null;
						buff.append(num);
						break;
					case "ba":
						num = 8;
						strBuff = null;
						buff.append(num);
						break;
					case "jiu":
						num = 9;
						strBuff = null;
						buff.append(num);
						break;
				}
				/*if(num != null){
					buff.append(num);
					num = null;
				}*/
		}
		
		System.out.println("转化的数字为:" + buff.toString());
	}

}
这一题的解法有点不灵活,效率不高,目前只想到了这种解法,如果还想到了在修改。

按要求分解字符串,输入两个数M,N;M代表输入的M串字符串, N代表输出的每串字符串的位数,不够补0。
  例如:输入2,8, “abc” ,“123456789”,则输出为“abc00000”,“12345678“,”90000000”

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Test {

	public static void main(String[] args) throws Exception {
		
		/*键盘录入
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println("请输入字符串的个数:" );
		String number = br.readLine();
		
		System.out.println("请输入字符串的:" );
		String str = br.readLine();*/
		
		String str = "12345678123456";
		/**
		 * 1、判断字符串的长度是否大于N
		 * 2、分为3中情况:小于,等于,大于
		 * 3、判断大于的情况:分为两种情况,刚好余数为0,余数不为0
		 */
		int len = str.length();
		
		if(len == 8){
			System.out.println(str);
		}else if(len < 8 && len > 0){
			int num = 8 - len;
			for(int i = 0;i<num;i++){
				str = str + "0";
			}
			System.out.println(str);
		}else{
			int num = len / 8;	//商
			int num1 = len % 8;	//余数
			String str1 = null;
			String str2 = null;
			if(num1 == 0){
				 str1 = str.substring(0, 8);
				 System.out.println("截取后:" + str1);
				 str2 = str.substring(8, 16);
				 System.out.println("截取后:" + str2);
			}else{
				str1 = str.substring(0, 8);
				str2 = str.substring(8, len);
				for(int i = 0;i<8 - num1;i++){
					str2 = str2 + "0";
				}
				System.out.println(str1 + "_"+str2);
			}
			System.out.println(num +"_" + num1);
		}
	}

}
这一题写的比较简单,只是大概的实现了功能,没有做修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值