【LetMeFly】3083.字符串及其反转中是否存在同一子字符串:哈希表
力扣题目链接:https://leetcode.cn/problems/existence-of-a-substring-in-a-string-and-its-reverse/
给你一个字符串 s
,请你判断字符串 s
是否存在一个长度为 2
的子字符串,在其反转后的字符串中也出现。
如果存在这样的子字符串,返回 true
;如果不存在,返回 false
。
示例 1:
输入:s = "leetcode"
输出:true
解释:子字符串 "ee"
的长度为 2
,它也出现在 reverse(s) == "edocteel"
中。
示例 2:
输入:s = "abcba"
输出:true
解释:所有长度为 2
的子字符串 "ab"
、"bc"
、"cb"
、"ba"
也都出现在 reverse(s) == "abcba"
中。
示例 3:
输入:s = "abcd"
输出:false
解释:字符串 s
中不存在满足「在其反转后的字符串中也出现」且长度为 2
的子字符串。
提示:
1 <= s.length <= 100
- 字符串
s
仅由小写英文字母组成。
解题方法:哈希表
开辟一个二维数组visited
,其中visited[i][j]
表示长度为2的子字符串('a' + i)('a' + j)
是否出现过。
遍历字符串,将每个长度为2的子字符串加入哈希表中。若这个子字符串翻转后的字符串在哈希表中出现过,则返回true
。
最终未返回则返回false
。
- 时间复杂度$O(len(s))$
- 空间复杂度$O(C^2)$,其中$C=26$
AC代码
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class Solution { public: bool isSubstringPresent(string s) { bool visited[26][26] = {false}; for (int i = 1; i < s.size(); i++) { visited[s[i - 1] - 'a'][s[i] - 'a'] = true; if (visited[s[i] - 'a'][s[i - 1] - 'a']) { return true; } } return false; } };
|
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ''' Author: LetMeFly Date: 2024-12-26 15:40:00 LastEditors: LetMeFly.xyz LastEditTime: 2024-12-26 15:41:59 ''' class Solution: def isSubstringPresent(self, s: str) -> bool: visited = [[False] * 26 for _ in range(26)] for i in range(1, len(s)): visited[ord(s[i - 1]) - ord('a')][ord(s[i]) - ord('a')] = True if visited[ord(s[i]) - ord('a')][ord(s[i - 1]) - ord('a')]: return True return False
|
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class Solution { public boolean isSubstringPresent(String s) { boolean[][] visited = new boolean[26][26]; for (int i = 1; i < s.length(); i++) { visited[s.charAt(i - 1) - 'a'][s.charAt(i) - 'a'] = true; if (visited[s.charAt(i) - 'a'][s.charAt(i - 1) - 'a']) { return true; } } return false; } }
|
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
package main
func isSubstringPresent(s string) bool { var visited [26][26]bool for i := 1; i < len(s); i++ { visited[s[i - 1] - 'a'][s[i] - 'a'] = true if visited[s[i] - 'a'][s[i - 1] - 'a'] { return true } } return false }
|
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/144746598