农场主人有一群牛,他给每只牛都取了一个名字,名字由小写字母组成。农场主人希望将这些牛分成一些组,每组的牛的名字合在一起都是回文串。回文串是正着读和反着读都一样的字符串。请你帮助农场主人找出所有可能的分组方案。每个分组方案按照字典序升序返回。
区块链毕设网qklbishe.com为您提供问题的解答
农场主人有一群牛,他给每只牛都取了一个名字,名字由小写字母组成。农场主人希望将这些牛分成一些组,每组的牛的名字合在一起都是回文串。回文串是正着读和反着读都一样的字符串。请你帮助农场主人找出所有可能的分组方案。每个分组方案按照字典序升序返回。
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串二维数组 */ private ArrayList<ArrayList<String>> ans=new ArrayList<>(); private String s; public String[][] partition (String s) { this.s=s; dfs(new ArrayList<String>(),0); String[][] res=new String[ans.size()][]; for(int i=0;i<ans.size();i++){ String[] tmp=new String[ans.get(i).size()]; ans.get(i).toArray(tmp); res[i]=tmp; } return res; } public void dfs(ArrayList<String> path,int idx){ if(idx==s.length()){ ans.add(new ArrayList<>(path)); return; } for(int i=idx;i<s.length();i++){ String si=s.substring(idx,i+1); if(check(si)){ path.add(si); dfs(path,i+1); path.remove(path.size()-1); } } } public boolean check(String s){ int i=0,j=s.length()-1; while(i<j){ if(s.charAt(i)!=s.charAt(j)){ return false; } i++; j--; } return true; } }
31:53
以上就是关于问题农场主人有一群牛,他给每只牛都取了一个名字,名字由小写字母组成。农场主人希望将这些牛分成一些组,每组的牛的名字合在一起都是回文串。回文串是正着读和反着读都一样的字符串。请你帮助农场主人找出所有可能的分组方案。每个分组方案按照字典序升序返回。的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训