题目描述
给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。
如:S为ABA,则不同的排列有ABA、AAB、BAA三种。

解题思路
先把每个字符当成唯一出现过一次,计算所有排列数;再统计重复出现的字母,除去每个字母的排列次数

例如
对于ABA,当成三个不同字符则排列数为:S总=A33S_总=A_3^3S总​=A33​,其中A出现两次,排列数为:SA=A22S_A=A_2^2SA​=A22​,B出现两次,排列数为:SB=A11S_B=A_1^1SB​=A11​,最终计算得:S=S总/(SA∗SB)=3∗2∗1/(2∗1∗1)=3S=S_总/(S_A*S_B)=3*2*1/(2*1*1)=3S=S总​/(SA​∗SB​)=3∗2∗1/(2∗1∗1)=3

代码:

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;/*** 题目描述* 给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。* 如:S为ABA,则不同的排列有ABA、AAB、BAA三种** 解题思路:先把每个字符当做唯一出现,再除去相同字母的排列次数*/
public class ReSortChars {public static void main(String[] args) {Scanner s = new Scanner(System.in);char[] chars = s.nextLine().toCharArray();Map<Character, Integer> map = new HashMap<Character, Integer>();int num = 0;for (char ch:chars) {if(null == map.get(ch)) {num = 0;} else {num = map.get(ch);}map.put(ch,num + 1);}int allSort = SortOne(chars.length);for (char key : map.keySet()) {allSort = allSort/SortOne(map.get(key));}System.out.println(allSort);}static int SortOne (int charsnum) {if (charsnum == 1) {return 1;}return charsnum * SortOne(charsnum - 1);}
}

给定一个字符串,要求给出重新排列的所有不相同的排列数相关推荐

  1. 【每日一练及解题思路V1】给定一个字符串,找出其中不含重复字符的最长子串的长度

    一.题目:给定一个字符串,找出其中不含重复字符的最长子串的长度: 二.举例: 比如"abcdefgh",不含重复字符的最长子串为eacdb,长度为8: 比如"abceac ...

  2. python练习题:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度

    题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 题目解析: 有一个字符串,长度不定, 要找出不重复字符串的长度,我们可以这么假设,先找到第一个下标,然后从后面拿到元素的下标对 ...

  3. java 求最长重复子串_给定一个字符串,求出其最长的重复子串。

    #include #include #include #include using namespace std; //给定一个字符串,求出其最长的重复子串 //方法一 string lsubstr_1 ...

  4. (java)给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

    给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. public class LengthOfLongestSubstring {public int lengthOfLonges ...

  5. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度

    题目 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &q ...

  6. 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "ab ...

  7. 给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置. 要求:从键盘输入两个字符串,第一个是给定的字符串,第二个是子串。

    给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置. 要求:从键盘输入两个字符串,第一个是给定的字符串,第二个是子串. 输入 abcd23abc34bcd bc 输出 1 ...

  8. Java中找出s字符串的回文_给定一个字符串 s,找到 s 中最长的回文子串。

    题目描述:给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路: 判断s[i..j]是否是回文字符串,依赖于s[i+1...j-1],这种一个问题的结果依赖于 ...

  9. Python练习题:---给定一个字符串 {xxx[xxx{xxx}]xx{x[xxx]xxx{xxx}xx}x} 判断其中的 {}[]() 是否成对出现

    给定一个字符串 {xxx[xxx{xxx}]xx{x[xxx]xxx{xxx}xx}x} 判断其中的 {} 是否成对出现 答题思路: 使用堆栈进行解决 我们首先压栈一个左括号,当什么时候检测到与之对应 ...

  10. 给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)...

    需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换) 如:  a 不替换  b 不替换  ab 不替换  ba 不替换  aba 不替换  aab ...

最新文章

  1. Codeforces Round #700 (Div. 2) D2 Painting the Array II(最通俗易懂的贪心策略讲解)看不懂来打我 ~
  2. 线程同步初解---转载
  3. python多个for的执行顺序-python顺序执行多个py文件
  4. opencv+pythons相机标定源码解析
  5. 基于live555实现的RTSPServer对底层进行性能优化的方法
  6. 南充一中计算机机房被盗,四川省CCF CSP-JS第一轮认证考试在南充一中成功举行...
  7. javascript原型_使用JavaScript的示例报告卡Web应用程序原型
  8. 《数据中台:让数据用起来》读书笔记
  9. 用 convert2rhel 工具将 CentOS 迁移至 RHEL
  10. MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
  11. python学习之字符串函数用法
  12. Math.net,.net上的科学计算利器
  13. java代码执行效率分析
  14. Sublime text 2 无需注册码的破解方法,只改2个字节
  15. 随着公网对讲机市场占有率得不断增长,部分对讲机厂家为了得到用户的认可,不断升级对讲机及时以及对讲机的功能和性能,因此越来越多的全国对讲机以及公网对讲机问世。但是某些用户不清楚对讲机的原理,不禁会问
  16. c语言试题库 文库,C语言试题库
  17. 谈操作系统(linux内核)学习的重要性
  18. 北斗定位,定位追踪,防盗追踪系统设计方案
  19. 弹指间,网页灰飞烟灭——Google灭霸彩蛋实现
  20. [7]深入浅出工作开源框架Camunda: camunda-webapp 用户登录功能代码分析

热门文章

  1. CNN入门(一)CNN是什么?
  2. 秒杀系统“减库存”设计的核心逻辑
  3. python代码总体框架怎么写_mtcnn python 开源代码详细图解
  4. 【转载】幸福,就是找一个温暖的人过一辈子
  5. java foward_Java技术分享:Forward和Redirect的区别
  6. 全球及中国汽车用热固性复合材料行业发展趋势分析及十四五规模预测报告2021年版
  7. 【转】理想主义者--理查德.马修.斯托曼(GNU的传奇)
  8. 机器视觉软件哪个好?如何选择机器视觉软件?
  9. 业务上云会面临哪些安全挑战?
  10. Canvas实现雷达图效果