第一次做csdn的编程挑战赛
来源:互联网 发布:阿里云域名转让 编辑:程序博客网 时间:2024/05/16 23:51
回文字符串
题目详情:
回文字符串是指从左到右和从右到左相同的字符串,现给定一个仅由小写字母组成的字符串,你可以把它的字母重新排列,以形成不同的回文字符串。
输入:非空仅由小写字母组成的字符串,长度不超过100;
输出:能组成的所有回文串的个数(因为结果可能非常大,输出对1000000007取余数的结果)。
例如:输入"aabb" 输出为2(因为“aabb”对应的所有回文字符串有2个:abba和baab)
函数头部
c:
int palindrome(const char *s);
c++
int palindrome(const string &s);
java
public static int palindrome(String s) ;
主要就是使用概率中个排列组合的内容,已经测试得到恨到的数,不产生溢出..提交没成功import java.io.BufferedReader;import java.io.InputStreamReader;public class palindrome {public static void main(String []args){try{System.out.println("请输入少于100个的小写字母组成的字符串!");String s="";BufferedReader in=new BufferedReader (new InputStreamReader(System.in));s=in.readLine();palindrome p=new palindrome();int num=p.palindrome(s);System.out.println("能组成的回文数为"+num);}catch (Exception e){};}public static int palindrome(String s){int n=0;long mun=0,rep = 1;int[] zm=new int[26];char[] str=new char[100];for(int i=0;i<26;i++){zm[i]=0;}for(int i=0;i<s.length();i++){str[i]=s.charAt(i);int t=str[i]-'a';zm[t]++;}for(int j=0;j<26;j++){if((zm[j]%2)==1){n++;}}if(n>1){return 0;}else{int m=s.length()/2;for(int k=0;k<26;k++){rep=rep*jieceng(zm[k]/2);}try {mun=jieceng(m)/rep;return (int) (mun%1000000007);} catch (ArithmeticException e) {// TODO: handle exceptionreturn 1;}}}public static long jieceng(int n){if(n==0){return 1;}else {long m=1;for(int i=1;i<=n;i++){m*=i;}return m;}}}
- 第一次做csdn的编程挑战赛
- 今天在CSDN上看到的GOOGLE编程挑战赛练习题
- [算法]CSDN编程挑战赛之寻找直方图中面积最大的矩形
- 记一次不会做的挑战赛
- [算法]CSDN编程挑战赛之整数取反
- 2014年CSDN编程挑战赛 - 检查交替字符串
- CSDN之编程挑战赛-玩转算法:最小向量乘积
- 我的CSDN第一次
- CSDN Blog 的 第一次
- CSDN的第一次随笔
- csdn的第一次
- 关于CSDN的第一次
- csdn 的第一次
- 属于CSDN的第一次
- CSDN的第一次记录
- CSDN的第一次
- 我的第一次CSDN
- 我的第一次CSDN
- hbase操作以及维护
- Geometry Shader Concepts & Examples
- js小结
- Watir 试用手记——一个很不错的开源 Web 自动化测试框架
- java web service实例
- 第一次做csdn的编程挑战赛
- Gentoo的前世今生 PART 1
- UIWebView
- 关于vmware workstation出现的问题
- 句子对齐工具
- Gentoo的前世今生 PART 2
- Extjs store load json data,store fields mapping can't show data
- 黑马程序员----java之多线程
- asp_异步列表的增删查改