输入一个字符串,打印出该字符串中字符的所有排列。
你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。
示例:
输入:s = “abc” 输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/zi-fu-chuan-de-pai-lie-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
List<Character> path = new ArrayList<>();
Set<String> ans = new HashSet<>();
public String[] permutation(String s) {
if (s.length() == 0) {
return ans.toArray(new String[ans.size()]);
}
boolean[] used = new boolean[s.length()];
backTrack(s, used);
return ans.toArray(new String[ans.size()]);
}
public void backTrack(String s, boolean[] used) {
if (path.size() == s.length()) {
String string = path.toString();
string = string.replace("[", "");
string = string.replace(",", "");
string = string.replace("]", "");
string = string.replace(" ", "");
ans.add(string);
return;
}
for (int i = 0; i < s.length(); i++) {
if (used[i] == true) {
continue;
}
used[i] = true;
path.add(s.charAt(i));
backTrack(s, used);
path.remove(path.size() - 1);
used[i] = false;
}
}
}
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/shu-zu-zhong-chu-xian-ci-shu-chao-guo-yi-ban-de-shu-zi-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public int majorityElement(int[] nums) {
int votes = 0;
int ans = 0;
for (int n : nums) {
if (votes == 0) {
ans = n;
votes++;
} else {
if (ans == n) {
votes++;
} else {
votes--;
}
}
}
return ans;
}
}