huawei0915——笔试

第一道:一个字符串,取只出现一次的字符,如果有多个字符出现一次,输出最后一次的,如果没有一次出现的。输出'NULL'
第二道,输入一串字符(多个单词),每个单词反序列然后输出。
第三道,大数相乘

第一题

package demos;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author wyl
 * @time 2018年9月15日下午4:33:11
 *找出不重复的字符
 */
public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		char[] cs=scanner.nextLine().toCharArray();
		Map<Character, Integer> map=new LinkedHashMap<>();
		for(int i=0;i<cs.length;i++){
			if (!map.containsKey(cs[i])) {
				map.put(cs[i], 1);
			}else {
				map.remove(cs[i]);
			}
		}
		ArrayList<Character> list=new ArrayList<>();
		for(Character e:map.keySet()){
			list.add(e);
		}
		if (!list.isEmpty()) {
			System.out.println(list.get(list.size()-1));
		}else {
			System.out.println("NULL");
		}	
		
	}

}


只过了40%
package test.demos;
import java.util.LinkedHashMap;
import java.util.Scanner;
/**
 * @author wyl
 * @time 2018年9月15日下午

 *找出不重复的最后一个字符
 */
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		String str=scanner.nextLine();
		System.out.println(LastNotRepeatingChar(str));
	}

	
	
	    /**
	    用数组来实现简单的哈希表:把数组的下标设为哈希表的键值key,
	    而把数组中的每一个数字设为哈希表的值value,
	    这样每一个下标及数组中该下标对应的数字就组成了一个“键值——值”的配对。
	    **/
	    public static String LastNotRepeatingChar(String str) {
//	    	StringBuffer sb=new StringBuffer();
//	    	sb.append(str);
//	    	str=sb.reverse().toString();
	       LinkedHashMap<Character, Integer> map=new LinkedHashMap<>();
	    	for(int i=0;i<str.length();i++){
	    		if (map.containsKey(str.charAt(i))) {
					int cnt=map.get(str.charAt(i));
					map.put(str.charAt(i), ++cnt);
				}else {
					map.put(str.charAt(i), 1);
				}
	    	} 
	    	
	    	for(int i=str.length()-1;i>=0;i--){
	    		char c=str.charAt(i);
	    		if (map.get(c)==1) {
					return c+"";
				}
	    	}
	        return "NULL";
	    }
	

}


100%通过
package test.demos;

import java.util.LinkedHashMap;
import java.util.Scanner;

/**
 * @author wyl
 * @time 2018年9月15日下午8:23:34
 * 找到最后一个不重复的字母
 */
public class FindLastLetter {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		String str=scanner.nextLine();
		System.out.println(findLast(str));
	}

	private static Character findLast(String str) { //改进
		// TODO Auto-generated method stub
		StringBuffer sb=new StringBuffer();
		LinkedHashMap<Character, Integer> map=new LinkedHashMap<>();
		for (int i = 0; i < str.length(); i++) {
			char tmp=str.charAt(i);
			if (map.containsKey(tmp)) {
				map.put(tmp, map.get(tmp)+1);
			}else {
				map.put(tmp, 1);
			}
		}
		for(int i=str.length()-1;i>=0;i--){
			char c=str.charAt(i);
			if (map.get(c)==1) {
				return c;     //改进
			}
		}
		return null;  //改进
	}

}

 

package test.demos;
/**
 * @author wyl
 * @time 2018年9月15日下午6:18:18

给定一个字符串,找出最后一个不重复的字符
 */
import java.util.Scanner;

public class Main4 {
	private static Scanner scanner;

	public static void main(String[] args) {
		scanner = new Scanner(System.in);  
		String  str = scanner.next(); 
		String c="";
		for(int i=str.length()-1;i>=0;i--){
			String temp=str.substring(0, i)+str.substring(i+1);
				int indx=temp.indexOf(str.charAt(i));
				if(indx==-1){
					c=String.valueOf(str.charAt(i));
					break;
				}
				else {
					c="NULL";
				}
			}
		System.out.println(c);
	}
} 

没来得及测试,本地跑的结果是对的

第二题:

package huawei;

import java.util.Scanner;
/字符反转  abc def ====cba fed
public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s1 = sc.nextLine();
		String[] s2 = s1.split(" ");
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < s2.length; i++) {
			String temp = s2[i];
			sb.append(reverse(temp) + " ");
		}
		System.out.println(sb.toString());
	}
	
	public static String reverse(String s)

	 { 

	   char[] array = s.toCharArray(); 

	  String reverse = "";  //新建空字符串

	   for (int i = array.length - 1; i >= 0; i--) 

	   reverse += array[i]; 

	   return reverse; 

	  }

}

第三题:

import java.math.BigInteger;
import java.util.Scanner;
/**大数相乘**/
public class test {
	public static void main(String[] args) {
		BigInteger result=null;
		Scanner scanner = new Scanner(System.in);  
		BigInteger num1 = scanner.nextBigInteger();  
		BigInteger num2 = scanner.nextBigInteger(); 
		result=num1.multiply(num2);
		System.out.println(result);
	}

} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章