一个含有字符串的数组,例如:["a", "b", "a", "c", "b" ,"d","a",1,1],需要得到一个新数组["a1", "b1","a2" ,"c","b2","d" ,"a3","11""12"]
时间: 2023-09-05 08:06:48 浏览: 140
这个题目有一个难点在于如何将重复的字符串进行计数。可以使用一个字典来记录每个字符串出现的次数,然后将其拼接成新的字符串。同时,需要注意处理非字符串元素的情况。
以下是一个可能的解法:
```python
def count_strings(arr):
counts = {}
new_arr = []
for elem in arr:
if isinstance(elem, str):
if elem not in counts:
counts[elem] = 1
else:
counts[elem] += 1
new_elem = elem + str(counts[elem])
else:
new_elem = str(elem)
new_arr.append(new_elem)
return new_arr
```
这个函数使用一个字典 `counts` 来记录每个字符串出现的次数。对于每个元素 `elem`,如果它是一个字符串,就检查它是否已经出现过,如果是,则将计数器加 1,否则将计数器初始化为 1。然后将字符串拼接成新的字符串 `new_elem`,例如 `"a"` 变成 `"a1"`,`"a"` 再次出现则变成 `"a2"`,以此类推。
如果元素不是字符串,那么就直接将其转换成字符串并拼接到新的数组中。
最后返回新的数组 `new_arr`。使用样例可以测试一下这个函数的结果:
```python
arr = ["a", "b", "a", "c", "b" ,"d","a",1,1]
new_arr = count_strings(arr)
print(new_arr)
# 输出 ["a1", "b1", "a2", "c", "b2", "d", "a3", "1", "2"]
```
可以看到,输出符合预期。注意到最后一个元素变成了 `"12"`,因为原数组中有两个整数 `1`,它们在新数组中被转换成了字符串,拼接成了 `"1"` 和 `"2"`。
阅读全文