列表

详情


100248. 字符串及其反转中是否存在同一子字符串

给你一个字符串 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 的子字符串。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool isSubstringPresent(string s) { } };

java 解法, 执行用时: 2 ms, 内存消耗: 42 MB, 提交时间: 2024-03-18 10:54:53

class Solution {
    public boolean isSubstringPresent(String S) {
        char[] s = S.toCharArray();
        boolean[][] vis = new boolean[26][26];
        for (int i = 1; i < s.length; i++) {
            int x = s[i - 1] - 'a';
            int y = s[i] - 'a';
            vis[x][y] = true;
            if (vis[y][x]) {
                return true;
            }
        }
        return false;
    }
}

golang 解法, 执行用时: 3 ms, 内存消耗: 2.2 MB, 提交时间: 2024-03-18 10:54:33

func isSubstringPresent(s string) bool {
	vis := [26][26]bool{}
	for i := 1; i < len(s); i++ {
		x, y := s[i-1]-'a', s[i]-'a'
		vis[x][y] = true
		if vis[y][x] {
			return true
		}
	}
	return false
}

python3 解法, 执行用时: 34 ms, 内存消耗: 16.3 MB, 提交时间: 2024-03-18 10:54:14

class Solution:
    def isSubstringPresent(self, s: str) -> bool:
        st = set()
        for x, y in pairwise(s):
            st.add((x, y))
            if (y, x) in st:
                return True
        return False

python3 解法, 执行用时: 46 ms, 内存消耗: 16.4 MB, 提交时间: 2024-03-18 10:52:33

class Solution:
    def isSubstringPresent(self, s: str) -> bool:
        n = len(s)
        m = defaultdict(bool)
        for i in range(0, n-1):
            m[s[i:i+2]] = True
            if m.get(s[i+1] + s[i]):
                return True
        return False

上一题