java找出两个字符串中所有共同的子串_【Java笔记】

Leetcode 1.两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

class Solution {
public int[] twoSum(int[] nums, int target) {
int[] res = new int[2]; //1.创建一个存放结果的数组res
HashMap<Integer,Integer> map = new HashMap<>(); //2.创建一个辅助的哈希表
for(int i = 0; i < nums.length; i ++){ //3.遍历
int tmp = target - nums[i]; //作差
if(map.containsKey(tmp)){ //判断
res[0] = map.get(tmp);
res[1] = i;
break;
}
map.put(nums[i],i);
}
return res; //返回
}
}

b8ce77399327d5681ec53b7129ba191e.png

详细理解:

1.map重要用法[map.put() map.get() map.containsKey()]

放入数据一般形式 -----put(object key, object value)

例如:map.put(1,”a”)

===============================================================

根据key获取对应的value一般形式-------get(object key)

例如:map.get(1);//获取到对应的key=1时的value=a;

===============================================================

判断是否包含某个元素一般形式containsKey(object Key)//是否包含某个元素。一般配合put和get,实现匹配并修改map中的元素。

相关链接:

Java中HashMap的用法_eck_燃的博客-CSDN博客​blog.csdn.net
8d35ce35dbdcb8fb67ea651cc390228c.png

2.charAt()-----用于返回指定位置的字符

var str=”Hello World!”

document.write(str.charAt(1))

输出结果:e

Leetcode3.最长无重复子串长度

给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。

解法1:双指针遍历一次

  1. 定义一个变量maxlen,记录不重复子串的最大长度
  2. 定义一个哈希表,辅助遍历查询;
  3. 定义一对左右指针,遍历字符串,对每一个字符做如下处理:
  • 判断该字符在不在map中,若存在,更新左边界max{L,c_index+1};
  • 将该字符及索引放到map中;
  • 更新maxLen = max {maxLen,R-L+1}

4.返回maxLen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值