我有一个排序列表的任务,如下所示:
Input: "Sorting1234"
Output: "ginortS1324"
Run Code Online (Sandbox Code Playgroud)
不使用join()方法,用于或同时在代码的任何地方.经过大量尝试以所需方式排序后,我成功了,但我无法将其打印为字符串
My Output is: ['g', 'i', 'n', 'o', 'r', 't', 'S', '1', '3', '2', '4']
Run Code Online (Sandbox Code Playgroud)
这是我用sorted()排序的算法:
st=input()
def iseven(x):
if x.isdigit():
return int(x)+9 if int(x)%2==0 else int(x)
res=sorted(st, key=lambda x: (x.isdigit(), x.isupper(), iseven(x), ord(x) ))
print(res)
Run Code Online (Sandbox Code Playgroud)
请帮帮我
我在谷歌上搜索这些方法的任何用例或示例,但找不到任何详细解释,它们只是与其他类似方法一起列出。实际上,我在 github 上查看了一些代码并遇到了这些方法,但无法理解用法。有人可以提供这些方法的详细解释。这是我遇到它们的 github 代码链接:https : //github.com/msiemens/tinydb/blob/master/tinydb/queries.py
我有一项任务是从给定的字符串中删除重复项(经典面试问题),但这有点不同,最终结果应该是尽可能最小的字典顺序。例如,cbacdcbc => acdb, bcabc => abc
。我在SO中看到了几个相关的问题,但我找不到答案。
编辑:这是我到目前为止的代码(无法正常工作):
public static String removeDuplicateCharsAlphbetically(String str) {
int len = str.length();
if (len<2) return str;
char[] letters = str.toCharArray();
int[] counts = new int[26];
for (char c : letters) {
counts[c-97]++;
}
StringBuilder sb = new StringBuilder();
for (int i=0;i<len-1;i++) {
if (letters[i]==letters[i+1]) continue;
if (counts[letters[i]-97]==1) {
sb.append(letters[i]);
} else if (counts[letters[i]-97] != 0) {
if (letters[i]<letters[i+1] && counts[letters[i]-97] == 1) {
sb.append(letters[i]);
counts[letters[i]-97]=0;
} else {
counts[letters[i]-97]--;
}
}
} …
Run Code Online (Sandbox Code Playgroud) 我给了n个单词(1≤n≤10^ 5).有些词可能重复.对于每个单词,我必须输出它出现的次数.但输出顺序应与单词首次出现的顺序一致.
我有一个问题的工作程序,但对于大输入我正在超时.这是我解决问题的方法:
n=int(input())
l=[]
ll=[]
for x in range(n):
l.append(raw_input())
if l[x] not in ll:
ll.append(l[x])
result = [ l.count(ll[x]) for x in range(len(ll)) ]
for x in range(len(result)):
print result[x],
Run Code Online (Sandbox Code Playgroud)