题目名称:最长回文串 时间限制:1000ms内存限制:256M 题目描述 找出最长回文串
(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串)(测试用例仅做参考,我们会根据代码质量进行评分)输入描述: 输入一行小写字母组成的字符串。
输出描述: 输出最先出现的最长回文串。
示例 示例1 输入 babad 复制 输出 bab
// 请关闭中文输入法,用英文的字母和标点符号。
// 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
// 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
// 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
// 模版代码提供基本的输入输出框架,可按个人代码习惯修改
package main
import "fmt"
func solution(str string)string{
n := len(str)
var longestPal string
// 遍历字符串中所有可能的中心点
for i := 0; i < n; i++ {
for j := i; j <= i+1; j++ {
left, right := i, j
// 尝试扩展以当前中心点为中心的回文串
for left >= 0 && right < n && str[left] == str[right] {
left--
right++
}
// 根据当前扩展出来的回文串更新最长回文串
if right-left-1 > len(longestPal) {
longestPal = str[left+1 : right]
}
}
}
fmt.Println(longestPal)
return longestPal
}
func main() {
var str string
fmt.Scan(&str)
solution(str)
}
最长回文子串问题可以用多种算法解决,其中一个常见的算法是“中心扩展法”。
该算法的基本思路是,对于每个可能成为回文中心的位置,尽可能地扩展这个回文中心,直到无法扩展为止。在扩展的过程中,记录下当前最长的回文子串。
具体实现时,我们可以枚举每个可能成为回文中心的位置,分别以该位置和该位置之间的空隙作为回文中心进行扩展。由于回文子串长度可能是奇数也可能是偶数,所以需要分别处理这两种情况。
题目名称:计数问题 时间限制:1000ms内存限制:256M 题目描述 试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤
9) 共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。输入描述: 2 个整数 n,x ,之间用一个空格隔开。
输出描述: 1 个整数,表示 x 出现的次数。
示例 示例1 输入 11 1 复制 输出 4
// 请关闭中文输入法,用英文的字母和标点符号。
// 如果你想运行系统测试用例,请点击【执行代码】按钮,如果你想提交作答结果,请点击【提交】按钮,
// 注意:除答案外,请不要打印其他任何多余的字符,以免影响结果验证
// 本OJ系统是基于 OxCoder 技术开发,网址:www.oxcoder.com
// 模版代码提供基本的输入输出框架,可按个人代码习惯修改
package main
import "fmt"
func solution(arr [2]int){
count := 0
if arr[0] < arr[1] {
for i := arr[0]; i <= arr[1]; i++ {
num := i
for num > 0 {
if num%10 == arr[1] {
count++
}
num /= 10
}
}
} else {
for i := arr[1]; i <= arr[0]; i++ {
num := i
for num > 0 {
if num%10 == arr[1] {
count++
}
num /= 10
}
}
}
fmt.Println(count)
}
func main() {
var arr [2]int
for i := 0; i < 2; i++ {
fmt.Scan(&arr[i])
}
solution(arr)
}