第一道:一个字符串,取只出现一次的字符,如果有多个字符出现一次,输出最后一次的,如果没有一次出现的。输出'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);
}
}