日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【剑指offer28:字符串的排列】【java】

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【剑指offer28:字符串的排列】【java】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:輸入一個字符串,按字典序打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a,b,c所能排列出來的所有字符串abc,acb,bac,bca,cab和cba。

import java.util.ArrayList; import java.util.Arrays;/*** Created by Fay on 2018/2/26.*/ public class leetcode28 {ArrayList<String> list = new ArrayList<String>();public ArrayList<String> Permutation(String str) {if(str == null){return null;}char[] arr = str.toCharArray();recursionArrange(arr,0,arr.length-1);return list;}public void recursionArrange(char[] arr ,int start, int end){if(start == end){String str = String.valueOf(arr);list.add(str);}else{for(int i=start; i<=end; i++){//如果碰到相同的字母,則不做交換,跳過本次循環(首字母除外,會有一次交換)if(i!=start && arr[start]==arr[i]){continue;}else{swap(arr, i, start);recursionArrange(arr, start+1, end);swap(arr, i ,start);}}}}public void swap(char[] arr,int m,int n){char temp = arr[m];arr[m] = arr[n];arr[n] = temp;}public static void main(String args[]){leetcode28 test = new leetcode28();ArrayList<String> list = test.Permutation("aba");for(String str:list){System.out.println(str);}} }

這里有一個地方很奇怪,如果是做遞歸交換的話,每次交換完之后會恢復原樣,那么對于abc來說,最后兩個應該是cab和cba的順序,為何牛客網測試給出了相反的順序?是否有人可以回答一下~

?

轉載于:https://www.cnblogs.com/fay0926/p/8482240.html

總結

以上是生活随笔為你收集整理的【剑指offer28:字符串的排列】【java】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。