1. 两数之和
给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
public class Solution {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int[] nums=new int[n];
for (int i=0;i<n;i++){
nums[i]=scanner.nextInt();
}
int[] a=twoSum(nums,6);
System.out.println("返回结果:"+a[0]+" "+a[1]);
}
private static int[] twoSum(int[] nums,int target){
int[] ans=new int[2];
for (int i=0;i<nums.length;i++){
for (int j=i+1;j<nums.length;j++){
if (nums[i]+nums[j]==target){
ans[0]=i;
ans[1]=j;
return ans;
}
}
}
return ans;
}
}
9. 回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,121 是回文,而 123 不是。
最好理解的一种解法就是先将 整数转为字符串 ,然后反转再判断两是否相等
public class Solution {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("输入数据:");
int a=scanner.nextInt();
if (isPalindrome(a)){
System.out.println("该数字是回文数字");
}else {
System.out.println("不是回文数字");
}
}
static boolean isPalindrome(int x){
String str=new StringBuilder(x+"").reverse().toString();
return (x+"").equals(str);
}
}
13. 罗马数字转整数
罗马数字包含以下七种字符: I
, V
, X
, L
,C
,D
和 M
。
字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000
public class Solution {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String str=scanner.next();
System.out.println(romanToInt(str));
}
static int romanToInt(String str) {
int sum = 0;
int preNum = getValue(str.charAt(0));
for (int i = 1; i < str.length(); i++) {
int num=getValue(str.charAt(i));
if (preNum<num){
sum-=preNum;
}else {
sum+=preNum;
}
preNum=num;
}
sum+=preNum;
return sum;
}
static int getValue(char ch){
switch (ch){
case 'I' : return 1;
case 'V' : return 5;
case 'X' : return 10;
case 'L' : return 50;
case 'C' : return 100;
case 'D' : return 500;
case 'M' : return 1000;
default:return 0;
}
}
}