题目
题目链接:
https://www.nowcoder.com/practice/3e8b48c812864b0eabba0b8b25867738
思路
参考答案C++
cpp
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
int Substrings(string str) {
//枚举每一个中心向两边扩展
int n = str.size();
int ans = 0;
for (int i = 0; i < 2 * n - 1; i++) {
int left = i / 2;
int right = i / 2 + i % 2;
while (left >= 0 && right < n && str[left] == str[right]) {
left--;
right++;
ans++;
}
}
return ans;
}
};
参考答案Java
java
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
public int Substrings (String str) {
//枚举每一个中心扩展
int n = str.length();
int ans = 0;
for (int i = 0; i < 2 * n - 1; i++) {
int left = i / 2;
int right = i / 2 + i % 2;
while (left >= 0 && right < n && str.charAt(left) == str.charAt(right)) {
ans++;
left--;
right++;
}
}
return ans;
}
}
参考答案Go
go
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
func Substrings(str string) int {
//枚举每一个中心向两边扩展
n := len(str)
ans := 0
for i := 0; i < 2*n-1; i++ {
left := i / 2
right := i/2 + i%2
for left >= 0 && right < n && str[left] == str[right] {
left--
right++
ans++
}
}
return ans
}
参考答案PHP
php
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param str string字符串
* @return int整型
*/
function Substrings( $str )
{
//枚举每一个中心向两边扩展
$n = strlen($str);
$ans = 0;
for($i=0;$i<2*$n-1;$i++){
$left = intval($i/2);
$right = intval($i/2)+$i%2;
while ($left >=0 && $right <$n && $str[$left] ==$str[$right]){
$left--;
$right++;
$ans++;
}
}
return $ans;
}