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

给你一个字符串 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 仅由小写英文字母组成。

解题思路:
1.截取两个字符,反转字符串,判断原字符串中是否包含该字符即可

完整代码:
    /**
       * Solution类提供了一种检查字符串中是否包含特定长度子串的方法
       */
      class Solution {
          /**
           * 检查给定字符串s中是否至少存在一个长度为2的子串,该子串在s中至少出现两次,且第二次出现时可以是反转的形式
           * 
           * @param s 待检查的字符串
           * @return 如果存在这样的子串返回true,否则返回false
           */
          public boolean isSubstringPresent(String s) {
              // 获取字符串长度,用于后续遍历
              int n = s.length();
              // 遍历字符串,寻找长度为2的子串
              for (int i = 0; i < n - 1; i++) {
                  // 提取当前位置到下一个位置的子串
                  String substring = s.substring(i, i + 2);
                  // 使用StringBuilder来反转子串
                  StringBuilder sb = new StringBuilder(substring);
                  // 获取反转后的子串
                  String reverse = sb.reverse().toString();
                  // 检查原字符串中是否包含反转后的子串
                  if (s.contains(reverse)) {
                      // 如果包含,说明找到了符合条件的子串,返回true
                      return true;
                  }
              }
              // 如果遍历完字符串后没有找到符合条件的子串,返回false
              return false;
          }
      }
posted @ 2024-12-26 14:37  JAVA-CHENG  阅读(25)  评论(0)    收藏  举报