国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

獲取字符串的全排列(去除字符串中2個字符相同時造成的重復)

這篇具有很好參考價值的文章主要介紹了獲取字符串的全排列(去除字符串中2個字符相同時造成的重復)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、概念
現(xiàn)有一個字符串,要打印出該字符串中字符的全排列。
以字符串a(chǎn)bc為例,輸出的結(jié)果為:abc、acb、bac、bca、cab、cba。
以字符串a(chǎn)ab為例,輸出的結(jié)果為:aab、aba、baa。


二、代碼

public class Permutation {
? ? public static void main(String[] args) {
? ? ? ? List<String> list = getPermutation("abca");
// ? ? ? ?輸出結(jié)果
? ? ? ? dump(list);
? ? }
// ? ?輸出結(jié)果
? ? public static void dump(List<String> list) {
? ? ? ? if (null != list) {
? ? ? ? ? ? for (String str : list) {
? ? ? ? ? ? ? ? System.out.println(str);
? ? ? ? ? ? }
? ? ? ? }

? ? }

// ? ?從字符串str獲取全排列結(jié)果
? ? public static List<String> getPermutation(String str) {
? ? ? ? if (null == str) {
? ? ? ? ? ? return null;
? ? ? ? }

? ? ? ? char[] array = str.toCharArray();
? ? ? ? Arrays.sort(array);
? ? ? ? List<String> list = new ArrayList<>();
// ? ? ? ?進行全排列操作
? ? ? ? permutationIteration(array, 0, list);
? ? ? ? Collections.sort(list);
? ? ? ? return list;
? ? }

// ? ?全排列操作
? ? public static List<String> permutationIteration(char[] array, int index, List<String> list) {
? ? ? ? //到達子遞歸操作的最后,將結(jié)果加入列表
? ? ? ? if (index == array.length - 1) {
? ? ? ? ? ? list.add(String.valueOf(array));
? ? ? ? ? ? return list;
? ? ? ? }
? ? ? ? for (int i = index; i < array.length; i++) {
? ? ? ? ? ? //當要交換的字符值相同時,則交換是使結(jié)果重復的操作,故不予交換
? ? ? ? ? ? if (i != index && array[i] == array[index]) {
? ? ? ? ? ? ? ? continue;
? ? ? ? ? ? }
? ? ? ? ? ? //交換2個位置的字符
? ? ? ? ? ? swap(index, i, array);
// ? ? ? ? ? ?遞歸調(diào)用獲取結(jié)果
? ? ? ? ? ? permutationIteration(array, index + 1, list);
// ? ? ? ? ? 將交換操作還原回去
? ? ? ? ? ? swap(index, i, array);
? ? ? ? }

? ? ? ? return list;
? ? }

? ? /**
? ? ?* array: ?字符數(shù)組
? ? ?* 交換字符數(shù)組中2個位置的字符
? ? ?*/
? ? public static void swap(int index1, int index2, char[] array) {
? ? ? ? if (index1 != index2) {
? ? ? ? ? ? char tmp = array[index1];
? ? ? ? ? ? array[index1] = array[index2];
? ? ? ? ? ? array[index2] = tmp;
? ? ? ? }
? ? }
}

致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等編程技術的技巧經(jīng)驗分享。

若作品對您有幫助,請關注、分享、點贊、收藏、在看、喜歡。您的支持是我們?yōu)槟峁椭淖畲髣恿Α?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-853036.html

到了這里,關于獲取字符串的全排列(去除字符串中2個字符相同時造成的重復)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • leetcode 567. 字符串的排列(滑動窗口-java)

    leetcode 567. 字符串的排列(滑動窗口-java)

    難度 -中等 leetcode567. 字符串的排列 給你兩個字符串 s1 和 s2 ,寫一個函數(shù)來判斷 s2 是否包含 s1 的排列。如果是,返回 true ;否則,返回 false 。 換句話說,s1 的排列之一是 s2 的 子串 。 示例 1: 輸入:s1 = “ab” s2 = “eidbaooo” 輸出:true 解釋:s2 包含 s1 的排列之一 (“ba”

    2024年02月10日
    瀏覽(16)
  • SwiftUI 如何保證 Text 中字符數(shù)量相等的字符串顯示寬度一定相同?

    SwiftUI 如何保證 Text 中字符數(shù)量相等的字符串顯示寬度一定相同?

    在 SwiftUI 中我們往往需要將內(nèi)容相似的字符串展列出來給用戶比較,這些字符串內(nèi)容各有不同但字符數(shù)量始終是相等的,我們希望它們的顯示寬度始終保持一致: 如上圖所示:即使是等寬字符組成的字符串在字符數(shù)量相等時它們的顯示寬度仍然可能不一致。但演示中最底部的

    2024年01月17日
    瀏覽(26)
  • php去除字符串兩邊空格空字符串換行方法

    php去除字符串兩邊空格空字符串換行方法

    在PHP中,可以使用以下幾種方法去除字符串兩邊的空格、空字符串和換行符: 使用trim()函數(shù)去除字符串兩邊的空格和空字符串,例如: 使用preg_replace()函數(shù)去除字符串中的空格、空字符串和換行符,例如: ? ? 3、使用str_replace()函數(shù)去除字符串中的空格、空字符串和換行符,

    2024年02月05日
    瀏覽(31)
  • 用js實現(xiàn)去除字符串首尾的空字符方法

    用js實現(xiàn)去除字符串首尾的空字符方法

    trim():去除字符串前后空格 結(jié)果顯示: 正則表達式:(^s*)首部 、(s*$)尾部,用replace替換的方法將首部空字符串和尾部空字符串替換成 結(jié)果顯示: split將字符串轉(zhuǎn)變?yōu)閿?shù)組,過濾條件filter()方法不等于\\\"\\\",用jion()將數(shù)組轉(zhuǎn)化為字符串。 filter()方法會創(chuàng)建一個新數(shù)組,原數(shù)組的每

    2024年02月14日
    瀏覽(31)
  • go字符串去除首尾所有換行符

    原創(chuàng)不易,如果對你有幫助,歡迎給作者點個贊哦! 一鍵開啟舒適、快捷: 調(diào)用: 效果:

    2024年02月13日
    瀏覽(23)
  • JS 去除字符串中所有標點符號

    JS 去除字符串中所有標點符號

    直接上代碼了

    2024年02月06日
    瀏覽(31)
  • Hive學習(11)hive去除空格或去掉字符串前后或中間的某一字符串

    問題: 需求:需要去除字符串中前N位/后N位指定字符 例如:11ABC11 MySQL中可使用以下函數(shù)解決: Hive中可使用以下函數(shù)解決: 其他函數(shù)亦可利用正則表達式規(guī)則自行變換替代。

    2024年02月12日
    瀏覽(54)
  • (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    (搜索) 劍指 Offer 38. 字符串的排列 ——【Leetcode每日一題】

    難度:中等 輸入一個字符串,打印出該字符串中字符的所有排列。 你可以以任意順序返回這個字符串數(shù)組,但里面 不能有重復元素 。 示例: 輸入:s = “abc” 輸出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制 : 1 = s 的長度 = 8 ??思路:回溯 可以直接 暴力窮舉 ,但

    2024年02月12日
    瀏覽(29)
  • 31 對集合中的字符串,按照長度降序排列

    31 對集合中的字符串,按照長度降序排列

    ? ? ? ? 思路:使用集合的sort方法,新建一個Comparator接口,泛型是String,重寫里面的compare方法。 ? ? ? ? 運行結(jié)果: ? ? ? ? ?擴充:點擊Comparator,查看接口內(nèi)部:發(fā)現(xiàn)加了@FunctionalInterface,說明可以使用箭頭函數(shù),直接使用箭頭函數(shù)就能表示Comparator接口以及它的compara

    2024年02月14日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包