【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