您的位置:首页 > 文旅 > 旅游 > 国际新闻最新消息今天摘抄_太原网站设计公司_对网站的建议和优化_关键的近义词

国际新闻最新消息今天摘抄_太原网站设计公司_对网站的建议和优化_关键的近义词

2024/12/23 15:53:20 来源:https://blog.csdn.net/GRrtx/article/details/142555675  浏览:    关键词:国际新闻最新消息今天摘抄_太原网站设计公司_对网站的建议和优化_关键的近义词
国际新闻最新消息今天摘抄_太原网站设计公司_对网站的建议和优化_关键的近义词

目录

牛客_小红的ABC_暴力/找规律

题目解析

C++代码1暴力

C++代码2找规律​编辑

Java代码找规律


牛客_小红的ABC_暴力/找规律

小红的ABC (nowcoder.com)

描述:
        小红拿到了一个只包含 'a' , 'b' , 'c' 三种字符的字符串。小红想知道,这个字符串最短的、长度超过 1 的回文子串的长度是多少?
        子串定义:字符串取一段连续的区间。例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。
        回文的定义:一个字符串正着读和倒着读都是相同的,那么定义它的回文的。

输入描述:

一个只包含 'a' , 'b' , 'c' 三种字符的字符串。

数据范围:字符串长度不小于2,且不超过100

输出描述:

如果不存在长度超过1的回文子串,则输出-1。

否则输出长度超过1的最短回文子串的长度。


题目解析

  • 解法1:模拟。用数组或者链表模拟均可。但是数据量大的话会超时。
  • 解法2:数学规律。通过画图可以找到相邻两次删除坐标的规律。通过递推关系,求出剩下的最后一个数是哪个。

C++代码1暴力

#include <climits>
#include <iostream>
using namespace std;
string str;bool isPal(int left, int right)
{while(left < right){if(str[left] == str[right])++left, --right;elsereturn false;}return true;
}
int main()
{cin >> str; // 暴力int n = str.size(), res = INT_MAX;for(int i = 0; i < n; ++i){for(int j = i + 1; j < n; ++j){if(isPal(i, j))res = min(res, j - i + 1);}}res = res == INT_MAX ? -1 : res;cout << res << endl;return 0;
}

C++代码2找规律

#include <iostream>
using namespace std;int main()
{string str;cin >> str;int n = str.size(), res = -1;for(int i = 0; i < n; ++i){if(i - 1 < n && str[i] == str[i + 1]){res = 2;break;}if(i - 2 < n && str[i] == str[i + 2]){res = 3;}}cout << res << endl;return 0;
}

Java代码找规律

import java.util.*;
public class Main
{public static void main(String[] args){Scanner in = new Scanner(System.in);char[] s = in.next().toCharArray();int ret = -1; // 并没有回⽂串int n = s.length;for(int i = 0; i < n; i++){if(i + 1 < n && s[i] == s[i + 1]) // 判断⻓度为 2 的⼦串{ret = 2;break;}if(i + 2 < n && s[i] == s[i + 2]) // 判断⻓度为 3 的⼦串{ret = 3;}}System.out.println(ret);}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com