#1
#两数之和
#给定一个整数数组nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。
#你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
#你可以按任意顺序返回答案。
classSolution{
publicint[]twoSum(int[] nums,int target){
Map<Integer,Integer> map =newHashMap<>();for(int i =0; i< nums.length; i++){
if(map.containsKey(target - nums[i])){
returnnewint[]{
map.get(target-nums[i]),i};}
map.put(nums[i], i);}thrownewIllegalArgumentException("No two sum solution");}}
#2
#整数反转
#给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
#如果反转后整数超过 32 位的有符号整数的范围 [−231,231 − 1] ,就返回 0。
#假设环境不允许存储 64 位整数(有符号或无符号)。
classSolution{
publicintreverse(int x){
int ans =0;while(x !=0){
int pop = x %10;if(ans >Integer.MAX_VALUE /10||(ans ==Integer.MAX_VALUE /10&& pop >7))return0;if(ans <Integer.MIN_VALUE /10||(ans ==Integer.MIN_VALUE /10&& pop <-8))return0;
ans = ans *10+ pop;
x /=10;}return ans;}}
#3
#回文数
#给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
#回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
publicbooleanisPalindrome(int x){
if(x <0){
returnfalse;}int help =1;int tmp = x;while(tmp >=10){
help *=10;
tmp /=10;}while(x !=0){
if(x %10!= x / help){
returnfalse;}
x = x % help /10;
help /=100;}returntrue;}
#4
#罗马数字转整数
#I1
#V5
#X10
#L50
#C100
#D500
#M1000classSolution{
publicintromanToInt(String s){
Map<String,Integer> map =newHashMap<>();
map.put("I",1);
map.put("IV",4);
map.put("V",5);
map.put("IX",9);
map.put("X",10);
map.put("XL",40);
map.put("L",50);
map.put("XC",90);
map.put("C",100);
map.put("CD",400);
map.put("D",500);
map.put("CM",900);
map.put("M",1000);int ans =0;for(int i =0;i < s.length();){
if(i +1< s.length()&& map.containsKey(s.substring(i, i+2))){
ans += map.get(s.substring(i, i+2));
i +=2;}else{
ans += map.get(s.substring(i, i+1));
i ++;}}return ans;}}
#5
#最长公共前缀
#编写一个函数来查找字符串数组中的最长公共前缀。
#如果不存在公共前缀,返回空字符串 ""。
classSolution{
publicStringlongestCommonPrefix(String[] strs){
if(strs.length ==0)return"";String ans = strs[0];for(int i =1;i<strs.length;i++){
int j=0;for(;j<ans.length()&& j < strs[i].length();j++){
if(ans.charAt(j)!= strs[i].charAt(j))break;}
ans = ans.substring(0, j);if(ans.equals(""))return ans;}return ans;}}
#6
#有效的括号
#给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
#有效字符串需满足:
#左括号必须用相同类型的右括号闭合。
#左括号必须以正确的顺序闭合。
classSolution{
publicbooleanisValid(String s){
int n = s.length();if(n %2==1){
returnfalse;}Map<Character,Character> pairs =newHashMap<Character,Character>(){
{
put(')','(');put(']','[');put('}','{');}};Deque<Character> stack =newLinkedList<Character>();for(int i =0; i < n; i++){
char ch = s.charAt(i);if(pairs.containsKey(ch)){
if(stack.isEmpty()|| stack.peek()!= pairs.get(ch)){
returnfalse;}
stack.pop();}else{
stack.push(ch);}}return stack.isEmpty();}}