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

示例 1:  输入: "ABA"     输出: 3
示例 2:  输入: "AABBCC"   输出: 90

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

参考链接:https://blog.csdn.net/lxycar/article/details/100921791

public class test1{public static void main(String[] args) {String s = "AABBCC";int n = s.length();int allSort = Asort(n);HashMap<Character, Integer> map = new HashMap<>();for (char c : s.toCharArray()) {map.put(c,map.getOrDefault(c,0) + 1);}for (char key : map.keySet()) {allSort /= Asort(map.get(key));}System.out.println(allSort);}public static int Asort(int n){if(n == 1)return 1;return n * Asort(n-1);}
}

题目扩展:生成字符串的所有排列(剑指offer38题)

输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。

示例:
输入:s = "abc"
输出:["abc","acb","bac","bca","cab","cba"]

题解:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof/solution/mian-shi-ti-38-zi-fu-chuan-de-pai-lie-hui-su-fa-by/


public class test1{List<String> res = new LinkedList<>();char[] c;public String[] permutation(String s) {c = s.toCharArray();dfs(0);return res.toArray(new String[0]);}public void dfs(int x){if(x == c.length - 1){res.add(String.valueOf(c));return;}HashSet<Character> set = new HashSet<>();for (int i = x; i < c.length; i++) {if (set.contains(c[i]))continue;set.add(c[i]);swap(i,x);dfs(x+1);swap(i,x);}}public void swap(int a, int b){char temp = c[a];c[a] = c[b];c[b] = temp;}}

华为面试题--字符串重排相关推荐

  1. 牛客网华为机试题 字符串问题 记录

    一.题目描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写. 输入描述: 第一行输入一个由字母和数字以及空格组成的字符串,第二行 ...

  2. 【华为机试题分析】 4 字符串分割

    我的首发平台是公众号[CodeAllen],学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处 [华为机试题分析] 4 字符串分割 #include <stdio.h> ...

  3. 【leetcode】第394题:字符串解码(华为笔试题)

    题目:给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正整数. ...

  4. 华为电脑c语言总是错误,关于华为机试题求代码!解决方法

    关于华为机试题求代码!!! n个字符串,1 如n=3 1.what is local bus? 2.this is local bus. 3.local bus is name sdhfj. 那么最长 ...

  5. 牛客网华为机试题(JavaScript)

    最近在牛客网刷华为机试题,遇到了很多坑,记录: 每一道题目都经过自己实践验证 华为机试题 牛客网在javascript V8引擎下处理输入输出如下: 利用了readline()接收输入的每一行,多行处 ...

  6. 【牛客网】华为机试题(00、C++版本)

    华为机试题,本来以为对一些基础的程序还是有点信心的:不过不练不知道,一练吓一跳.平时虽然也都码程序,但是一到机试题就各种乱七八的不适应.还是要加强一下练习. 1.字符串最后一个单词的长度 题目描述:计 ...

  7. C语言面试题大汇总之华为面试题 Eddy整理

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...

  8. 华为机试题库+题解【C语言版】

    文章目录 前言 1.字符串最后一个单词的长度[***] 描述 输入描述 输出描述 示例 解题代码 2.计算某字符出现次数[****] 描述 输入描述 输出描述 示例 解题代码 3. 明明的随机数[** ...

  9. 华为机试python编程题_牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  10. 【华为机试题分析-C/C++】知识点分类总结

    专栏地址:https://blog.csdn.net/super828/category_10825347.html 字符串 [华为机试题分析] 1 字符串最后一个单词的长度 [华为机试题分析] 2 ...

最新文章

  1. 使用sendfile()让数据传输得到最优化,TCP_CORK、TCP_DEFER_ACCEPT和TCP_QUICKACK优化网络...
  2. python【洛谷算法题单-搜索】P1605 迷宫
  3. php if判断两个条件_PHP中if相关条件语句该如何理解使用?
  4. 浅浅地谈一下随机算法【poj2454】【poj3318】
  5. 使用offsetof对结构体指针偏移操作
  6. JVM面试1 :谈谈你对Java的理解
  7. 服务器2003系统黑屏怎么办,windows-server-2003 – Windows Server 2003 – 黑屏,光标在启动时...
  8. Windows集群网络负载均衡
  9. shell中变量截取
  10. MPEG LA提供一站式ATSC 3.0许可证
  11. HTML5期末大作业:动漫电网站设计——动漫电影《你的名字》(7页) HTML+CSS大作业: 动漫电网页制作作业_动漫电网页设计...
  12. 生先森依旧怀抱初心,满载爱意
  13. 利用wordcloud和jieba制作词云
  14. 如何获取侧面加载的应用程序以显示在Fire Tablets的FreeTime配置文件中
  15. 55寸电视尺寸长宽高多少
  16. ASCII码_字符与数字转换等问题
  17. Axure9网易云低保真原型设计
  18. 【成员故事】CSDN杨东杰:生态运营需要一个自己的圈子
  19. MBA-day33 绝对值的几何意义
  20. star-rating评分插件的使用

热门文章

  1. 神经网络中激励函数的作用
  2. 程序员必备的八大排序算法
  3. 关于我考研的这一年随记 —— 2022暨南大学电子信息计算机技术专业初试第三复试第一
  4. 一起来学PCB-0.4-STM32F072C8T6最小核心板原理图设计
  5. java 记住密码的实现_javaweb实现记住密码功能
  6. 微信360全景图片怎么制作?
  7. 统计自然语言处理(第2版)目录
  8. WeChat for Linux
  9. WPS文字中的某些内容下方出现的红色波浪线怎么去掉?
  10. DS18B20温度传感器