劍指Offer.38 字串全排列(包含重複)
題目給定字串“abca”輸出其全部排列。
分析:
package 劍指Offer; import java.util.ArrayList; import java.util.List; public class 劍指38_字串全排列 { public static void main(String[] args) { String s="abca"; for(String ss:Permutation(s)){ System.out.println(ss); } System.out.println(Permutation(s).size()); } public static List<String> Permutation(String s){ List<String> list=new ArrayList <>(); if(s==null||s.length()==0) return list; Permutation(list,s.toCharArray(),0); return list; } public static void Permutation(List<String> list,char [] chs,int index){ if(index==chs.length){ list.add(asString(chs)); }else{ for(int i=index;i<chs.length;i++){ //用來表示之前是否有i位置相同的出現過 if(isSwap(chs,index,i)){ //交換,即要交換的兩個字元不相等 char temp=chs[i]; chs[i]=chs[index]; chs[index]=temp; Permutation(list,chs,index+1); temp=chs[i]; chs[i]=chs[index]; chs[index]=temp; } } } } //字串全排列核心(需要判斷當前位置和需要交換的位置是否存在相同的,如果存在相同的,則表示已經換過了,這個位置就不用再換了) public static boolean isSwap(char [] chs,int index,int i){ for(int j=index;j<i;j++){ if(chs[j]==chs[i]){ return false; } } return true; } public static String asString(char [] chs){ StringBuilder sb = new StringBuilder(); for(char c:chs){ sb.append(c); } return sb.toString(); } }
相關推薦
劍指Offer.38 字串全排列(包含重複)
題目給定字串“abca”輸出其全部排列。分析:package 劍指Offer; import java.util.ArrayList; import java.util.List; public c
【劍指Offer】字串全排列
題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字
劍指offer-字串全排列(有重複值)
一、問題描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 結果請按字母順序輸出。 輸入描述: 輸入一個字串,長度不超過9(可能有字元重複),字元只包
[劍指offer] --27.字串的排列
題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 import java.
【python資料結構與演算法】【劍指offer】字串的排列
題目描述: 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba,且要求輸出字串按序排列,不可重複 思路: 其實排列問題的思路很簡單,有點類似《劍指offer
劍指offer——27.字串的排列
題目描述: 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述:輸入一個
【劍指offer】字串的排列
題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 class
劍指Offer:字串的排列
輸入一個字串,打印出該字串中字元的所有排列。例如輸入字串“abc”,則打印出由a、b、c所能排列出來的所有字串abc、acb、bac、bca、cab和cba。 我們解這題時可以將字串劃分為兩部分:首字元和後面的所有字元。 首先求所有可能出現在第一個位置的字元
《劍指offer》——字串的排列
T: 題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 結果請按字母順序輸出。 輸入描述: 輸
【劍指offer】字串的排列與組合
【1、字串排列】 【題目】 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。
【劍指offer】Java版程式碼(完整版)
一、引言 《劍指offer》可謂是程式猿面試的神書了,在面試中幫了我很多,大部分面試的演算法題都會遇到原題或者是類似的題。但是書上的程式碼都是C版的,我在這裡整理了一份Java版的程式碼供大家學習參考,這些程式碼我都是在OJ上跑過全AC的,所以正確性你大可放心
劍指offer之變態跳臺階(Java實現)
變態跳臺階 NowCoder 題目描述: 一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 ###解題思路: 關於本題,前提是n個臺階會有一次n階的跳法。分析如下: f(1) = 1 f(2)
【劍指offer】字串的全排列
題目描述 輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 注意有可能重
劍指offer:字串的全排列
輸入一個字串,按字典序打印出該字串中字元的所有排列。例如輸入字串abc,則打印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。 輸入描述: 輸入一個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。 class Solution { public:
劍指offer 38 數字在排序數組中出現的次數
++ exit false ast stk div number size cto 自己的寫法 class Solution { public: int GetNumberOfK(vector<int> data ,int k) { i
劍指offer:樹的子結構(Python)
題目描述 輸入兩棵二叉樹A,B,判斷B是不是A的子結構。(ps:我們約定空樹不是任意一個樹的子結構) # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x #
劍指offer程式設計題python實現(第2題)替換空格
題目:替換空格 題目描述: 請實現一個函式,將一個字串中的每個空格替換成“%20”。 例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 python實現思路: 本題的實現思路很多,首先python中提供了很多處理字串的方法,替換字串直接
劍指offer程式設計題python實現(第16題)合併兩個排序的連結串列
劍指offer程式設計題python實現(第16題)合併兩個排序的連結串列 題目描述 輸入兩個單調遞增的連結串列, 輸出兩個連結串列合成後的連結串列, 當然我們需要合成後的連結串列滿足單調不減規則。 '''題目描述 輸入兩個單調遞增的連結串列, 輸出兩個連結串列合成後的連結串列, 當然我們需
劍指offer——正則表示式匹配(遞迴呼叫)
當模式中的第二個字元不是“*”時: 1、如果字串第一個字元和模式中的第一個字元相匹配,那麼字串和模式都後移一個字元,然後匹配剩餘的。 2、如果 字串第一個字元和模式中的第一個字元相不匹配,直接返回false。 而當模式中的第二個字元是“*”時: 如果字串第一個字元跟模式第一個字元
劍指offer:(38)知識遷移 :數字在排序陣列中出現的次數
統計一個數字在排序陣列中出現的次數。 思路:排序陣列一定要想到二分法查詢 package co.com.jianzhioffer; import java.io.ObjectInputStream.GetField; public class