牛客网在线编程:统计回文数

题目描述:

“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。
例如:
A = “aba”,B = “b”。这里有4种把B插入A的办法:
* 在A的第一个字母之前: "baba" 不是回文
* 在第一个字母‘a’之后: "abba" 是回文
* 在字母‘b’之后: "abba" 是回文
* 在第二个字母‘a‘之后 "abab" 不是回文
所以满足条件的答案为2
输入描述:
每组输入数据共两行。
第一行为字符串A
第二行为字符串B
字符串长度均小于100且只包含小写字母
输出描述:
输出一个数字,表示把字符串B插入字符串A之后构成一个回文串的方法数
示例1
输入

aba
b
输出

2
思路:
简单的String操作。
1、判断回文
2、subString(i,j)
3、StringBuilder/StringBuffer中insert的用法

 1 import java.util.*;
 2 public class Tongjihuiwen {
 3     public static boolean huiwen(String s){
 4         int i = 0;
 5         int j = s.length()-1;
 6         while(i<j){
 7             if(s.charAt(i)!=s.charAt(j)){
 8                 return false;
 9             }
10             i++;
11             j--;
12         }
13         return true;
14     }
15     public static void main(String[] args) {
16         // TODO Auto-generated method stub
17         Scanner sc = new Scanner(System.in);
18         String str1 = sc.nextLine();
19         String str2 = sc.nextLine();
20
21         //StringBuffer sb = new StringBuffer(str1);
22         //System.out.println(sb.toString());
23 //        if(huiwen(sb.toString())==true)System.out.println(1);
24 //        else {
25 //            System.out.println(0);
26 //        }
27 //        int count = 0;
28 //        for(int i = 0;i<=str1.length();i++){
29 //            String string = str1.substring(0,i)+str2+str1.substring(i,str1.length());
30 //            if(huiwen(string)==true){
31 //                count++;
32 //            }
33 //        }
34         int count = 0;
35         for(int i = 0; i <= str1.length();i++){
36             StringBuilder sb = new StringBuilder(str1);
37             sb.insert(i, str2);
38             if(huiwen(sb.toString())){
39                 System.out.println(sb);
40                 count++;
41             }
42         }
43         System.out.println(count);
44     }
45
46 }

原文地址:https://www.cnblogs.com/zlz099/p/8550592.html

时间: 2024-08-03 08:05:55

牛客网在线编程:统计回文数的相关文章

牛客网在线编程:分苹果

题目描述: n 只奶牛坐在一排,每个奶牛拥有 ai 个苹果,现在你要在它们之间转移苹果,使得最后所有奶牛拥有的苹果数都相同,每一次,你只能从一只奶牛身上拿走恰好两个苹果到另一个奶牛上,问最少需要移动多少次可以平分苹果,如果方案不存在输出 -1.输入描述:每个输入包含一个测试用例.每个测试用例的第一行包含一个整数 n(1 <= n <= 100),接下来的一行包含 n 个整数 ai(1 <= ai <= 100).输出描述:输出一行表示最少需要移动多少次可以平分苹果,如果方案不存在则

牛客网在线编程:n个数中出现次数大于等于n/2的数

题目描述: 输入n个整数,输出出现次数大于等于数组长度一半的数.输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2.输出描述:输出出现次数大于等于n/2的数.示例1输入 3 9 3 2 5 6 7 3 2 3 3 3输出 3 思路: 每次输入,使用数组a[n]记录n出现的次数,num记录总数.然后判断a[i]是否大于等于num/2.是的话返回i即可剑指offer上的思路是保存两个值,当接下来出现的下一个数与前一个数相同时,计数加一,否则减一.

牛客网在线编程:星际穿越

题目描述: 航天飞行器是一项复杂而又精密的仪器,飞行器的损耗主要集中在发射和降落的过程,科学家根据实验数据估计,如果在发射过程中,产生了 x 程度的损耗,那么在降落的过程中就会产生 x2 程度的损耗,如果飞船的总损耗超过了它的耐久度,飞行器就会爆炸坠毁.问一艘耐久度为 h 的飞行器,假设在飞行过程中不产生损耗,那么为了保证其可以安全的到达目的地,只考虑整数解,至多发射过程中可以承受多少程度的损耗?输入描述:每个输入包含一个测试用例.每个测试用例包含一行一个整数 h (1 <= h <= 10^

牛客网在线编程:公共字符

题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts."输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入 They are students. aeiou输出 Thy r stdnts. 思路: 字符串操作处理.contains函数,replace,replaceAll,subSt

牛客网在线判题系统JavaScript(V8)使用

JavaScript作为一种弱类型的编程语言,语法和C/C++.JAVA等存在差别,但是对于大部算法题,不只是C/C++.JAVA,也依然可以使用JavaScript来实现.所以在牛客网中,如果你喜欢JavaScript这门编程语言,同时对数据结构与算法感兴趣,当然可以使用这门语言去刷编程题. 大家有没有跟我碰到过和我类似的情况,在牛客网刷编程题的时候,编译器提供的是Javascript(v8 6.0.0),在线编程部分前端编程还好,只用在题目给出的函数中补充就行.但苦恼的是,我们不知道如何像C

牛客华为在线编程题----简单密码破解

首先题目如下: /** * * 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987, * 这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码. * * 他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, * tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出

牛客网JavaScript编程规范

1.输入单个数字 //输入的是一个数字8 var readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); rl.on('line', function count(n) { //对n进行操作 console.log(result); } }); 2.输入多个数字 'a,b'或者'ab' // 输入的是一行数据RA,获

SQL练习题(3)-牛客网

牛客网在线编程网址:https://www.nowcoder.com/activity/oj (默认使用SQLite) 题目1: 获取select * from employees对应的执行计划 EXPLAIN select * from employees; 题目2: 将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `b

2017年校招全国统一模拟笔试(第二场)编程题集合-牛客网

 2017年校招全国统一模拟笔试(第二场)编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/276712b113c6456c8cf31c5073a4f9d7来源:牛客网 牛牛有两个字符串(可能包含空格),牛牛想找出其中最长的公共连续子串,希望你能帮助他,并输出其长度. 输入描述: 输入为两行字符串(可能包含空格),长度均小于等于50. 输出描述: 输出为一个整数,表示最长公共连续子串的长度. 输入例子: abcde abgde 输出例子