第一道:一個字符串,取只出現一次的字符,如果有多個字符出現一次,輸出最後一次的,如果沒有一次出現的。輸出'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);
}
}