算法编程(二十五):检查单词是否为句中其他单词的前缀

简介: 算法编程(二十五):检查单词是否为句中其他单词的前缀

写在前面


这道题,《检查单词是否为句中其他单词的前缀》,主要考察的就是关于字符串之间的比较。

下面就一起来看一下具体解法吧。

image.png

题目解读


根据题目的描述来看,其主要的目的是要在一个长字符串中,找出其中的以第二个字符串开头的单词位置。

并且保证了该长字符串中只包含纯字母单词,并且每个单词之间通过空格来隔开。

要遍历每一个单词,只需要通过split方法分割长字符串即可。

遍历过程中,可以通过indexOf来判断是否以第二个字符串开头。

两者结合就能得到结果了,下面来看一下具体的代码编写吧。

代码实现


本次执行代码如下所示,大家可以自行参考一下。

public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.isPrefixOfWord("i love eating burger", "burg"));
    }
    public int isPrefixOfWord(String sentence, String searchWord) {
        String[] ss = sentence.split(" ");
        for (int i = 0; i < ss.length; i++) {
            if(ss[i].length() >= searchWord.length() && ss[i].indexOf(searchWord) == 0){
                return i + 1;
            }
        }
        return -1;
    }
}

代码执行结果


这次的代码执行就非常不错了,前几道题做的是一塌糊涂,这次应该是归功于先比对了一下长度。

image.png

其他思路


有的大佬使用了字典树和双指针的方式,感觉并不如我这个方式好,但是效率确实是高一些,有兴趣的话可以自行试一下。

总结


本题考察对字符串的对比操作,在这我本人使用了indexOf方法,有些取巧,但是基本上也是这么回事,主要是要在每次indexOf方法执行前先比对一下两个字符串的长度差距,如果前者小于后者,也就没有比较的意义了。


相关文章
|
6天前
|
存储 算法 Python
震撼!Python算法设计与分析,分治法、贪心、动态规划...这些经典算法如何改变你的编程世界!
【7月更文挑战第9天】在Python的算法天地,分治、贪心、动态规划三巨头揭示了解题的智慧。分治如归并排序,将大问题拆解为小部分解决;贪心算法以局部最优求全局,如Prim的最小生成树;动态规划通过存储子问题解避免重复计算,如斐波那契数列。掌握这些,将重塑你的编程思维,点亮技术之路。
14 1
|
1月前
|
机器学习/深度学习 算法 搜索推荐
编程之舞:探索算法的优雅与力量
【6月更文挑战第10天】在软件的世界里,算法是构筑数字宇宙的基石。它们如同精心编排的舞蹈,每一个步骤都充满着逻辑的美感和解决问题的力量。本文将带领读者走进算法的世界,一起感受那些精妙绝伦的编程思想如何转化为解决现实问题的钥匙。
19 3
|
1月前
|
存储 SQL 算法
LeetCode题58: 5种算法实现最后一个单词的长度【python】
LeetCode题58: 5种算法实现最后一个单词的长度【python】
|
1月前
|
存储 算法 Java
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode14:最长公共前缀(Java/C/Python3实现含注释说明,Easy)
13 1
|
21天前
|
人工智能 算法 搜索推荐
Java算法编程详解和程序实例
Java算法编程详解和程序实例
17 0
|
1月前
|
算法 安全 数据挖掘
解锁编程之门:数论在算法与加密中的实用应用
解锁编程之门:数论在算法与加密中的实用应用
|
1月前
|
算法
算法特训,AB5 .点击消除BC.149简写单词牛客.除2!牛客.Fibonacci数列
算法特训,AB5 .点击消除BC.149简写单词牛客.除2!牛客.Fibonacci数列
|
1月前
|
算法 Java Go
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
【经典算法】LeetCode 58.最后一个单词的长度(Java/C/Python3/Go实现含注释说明,Easy)
18 0
|
1月前
|
存储 算法 Java
【经典算法】LeetCode 151. 反转字符串中的单词(Java/C/Python3实现含注释说明,中等)
【经典算法】LeetCode 151. 反转字符串中的单词(Java/C/Python3实现含注释说明,中等)
22 0
|
2月前
|
设计模式 算法 Java
如何在面试中应对编程与算法面试?
面试中,编程能力至关重要,主要分为三个层次:初级关注基本功,如语法、原理和常见问题解决;高级涉及数据结构与算法,基础算法如排序对中小厂重要,大厂则需深入数据结构;资深专家层次需精通设计模式,以保证代码的扩展性和维护性。提升编程技能可采用PDCA循环学习法,从计划到执行、检查、行动不断迭代。通过实践项目如开发后端系统、测试框架来检验学习成果,并逐步学习算法和设计模式。坚持不懈的努力和重构将助你成为技术专家。记住,超越大多数人的关键在于持续学习和专注深耕。
16 0
如何在面试中应对编程与算法面试?