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);
	}

} 

 

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