524.通过删除字母匹配到字典里最长的单词(力扣leetcode) 博主可答疑该问题

一、笔记部分

注意点:

1.List的使用,获取"apple"的字符串,list.get(1)

2.如果是查询等,一般有两个对象,一个对象分配个指针,如果只是求和比较,直接就可以在一个对象上完成,一般就是双头指针跑。

 

第一个暴力解法:

1,找出s的所有情况,依次在字典里进行比较。找出最长的,并出现次序在其前的。

一段字符的所有情况算法(只删除一个或多个字符,不能将字符交换顺序)

List<String> l=new ListArrary<>();

str="";

generate(s,str,0,l);



pubilc void generate (String s,String str ,int i ,List <String>l){

if(s.length==i)

l.add(str);

//这里巧用额外字符串,一直输出各种情况的字字符串

else{

generate(s,str+s.charAt(i),i+1,l);//如果只有一句的话只能输出abc ,若s=”abc“

generate(s,str,i+1,l);

//就仅仅多这一行,结果就多了6个,每次总比第一行少一个字母,比如三个字母,就会让一、二、三个字母情况都输出,然后在这前面的情况再删减一个字母,组成新型的空的、一个、二个字母。依次递减字母,达到所有情况,如下图。

如果只有1行,那么只是调用3次,两行就直接2^3

}

}

 

 

方法二:双指针,找子序列。

自己写的(跟粑粑一样,还调试不过。)

错误:

1.题目没说要返回最大长度,没必要专门去搞最大长度,判断是不是,一般都是子函数返回布尔类型

题目中是返回长度最长且字典顺序最小的字符串,可以删除,说明字典的字符串是给出字符串的子序列双指针判定,然后返回boolean,主函数返回str,利用增强for,其中条件是长度最长且顺序靠前。

正确版本:

str.compare(str2)比较,

1.当两个字符串一样属于包含关系的时候,返回的结果是两个长度相减的值

2.长度不一样且前几个字符也不一样,从第一位开始找,当找到不一样的字符时,则返回的值时这两个字符比较值。

 

 

 

二、双指针类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112557634

 

三、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

 

四、如有疑问可加QQ群讨论:725936761     博主免费答疑
欢迎大家一起讨论进步。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值