上篇重点讲述自己的收获,下篇是对题目的深入思考!
学习内容:
学习时间:
2021年3月31日 下午2点至2点半
学习产出:
用的是Java写的
class Solution {
public int[] twoSum(int[] nums, int target) {
int []sumArray=new int[2];
int sum;
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(nums[i]+nums[j]==target)
{
sumArray[0]=i;
sumArray[1]=j;
}
}
}
return sumArray;
}
}
正题:
- 学习中遇上了非常非常乌龙的事情!原来!!leetcode不用写主函数!只需要补充函数就好了。。。怪不得一直报错。
- 在这次刷题中,最最最让我收获的不是如何写Solution中的内容!而是已经帮忙写好的主函数!
- 在不知道不用写main函数的时候,这个输入真是困扰我!题目中要求的输入方式是这样的:
输入:nums = [2,7,11,15], target =9
一看就是一段字符串呀!处理字符串正好是我的薄弱点,所以这里的处理就很值得学习!
1.字符串转换为整型数组
2.整型数组转换为字符串
具体代码如下:(其中有我加的注释帮助理解和学习)
public class MainClass {
//将字符串转换为整数数组
public static int[] stringToIntegerArray(String input) {
input = input.trim();
//trim是string类中的函数,用于删除字符串的头尾空白符。
input = input.substring(1, input.length() - 1);
//public String substring(int beginIndex, int endIndex)
//截取字符串 ,这里beginIndex是1,endIndex是input.length()-1
//可以思考一下为什么是1~length()-1。(其实很简单,后面会给出答案)
if (input.length() == 0) {
return new int[0];
}
String[] parts = input.split(",");
//stringObj.split([separator,[limit]])
//split函数返回的是字符串数组。
//stringObj:要被分解的字符串对象。
//separator:可以是正则表达式,也可以是字符串,比如这里就是用“,”分割
//limit:可用于限制返回数组长度
//所以这里获得了一个字符串数组。
int[] output = new int[parts.length];
//下面是转换过程:用一个字符串变量储存数字字符串,再转换为数值
for(int index = 0; index < parts.length; index++) {
String part = parts[index].trim();
output[index] = Integer.parseInt(part);
}
return output;
}
//整型数组转换为字符串
public static String integerArrayToString(int[] nums, int length) {
if (length == 0) {
return "[]";
}
String result = "";
for(int index = 0; index < length; index++) {
int number = nums[index];
result += Integer.toString(number) + ", ";
}
return "[" + result.substring(0, result.length() - 2) + "]";
//看了这个字符串格式之后解决了上面的问题了吧!
//因为0存的是[,length()-1存的是]
}
public static String integerArrayToString(int[] nums) {
return integerArrayToString(nums, nums.length);
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
//主函数中的接收也值得学习
while ((line = in.readLine()) != null) {
int[] nums = stringToIntegerArray(line);
//将输入的数组先存起来
line = in.readLine();
//存入target
int target = Integer.parseInt(line);
//Solution是要补充的函数
int[] ret = new Solution().twoSum(nums, target);
String out = integerArrayToString(ret);
System.out.print(out);
}
}
}
总结:
学到了字符串处理上许多函数的使用:
trim()
substring()
split()