定义一个字符串变量,输入字符串,判断有没有连续重复的字符出现,统计重复字符出现次数,例如aaabaccdfff

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定义一个字符串变量,输入字符串,判断有没有连续重复的字符出现,统计重复字符出现次数,例如aaabaccdfff相关的知识,希望对你有一定的参考价值。

Rt 很急
用C#语言

参考技术A C#好久不用了 Java的:
public class Test
public static void main(String[] args)
String str = "aaabaccdfff";
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < str.length(); i++)
int sum = 0;
for (int j = 0; j < str.length(); j++)
if (str.charAt(i) == str.charAt(j))
sum++;

map.put(str.charAt(i), sum);

for (Map.Entry<Character, Integer> me : map.entrySet())
if ((Integer) me.getValue() > 1)
System.out.println("重复字母:" + me.getKey() + "重复次数:"
+ me.getValue());

本回答被提问者采纳

字符串的遍历

字符串的遍历

、字符串的统计

技术图片

思路:

一个变量count和一个结果变量res,若s[i] == s[i+1],count +=1 ,否则count= 1

代码:

def getCountStr(s):
    if not s:
        return s
    count = 1
    res = ‘‘
    for i in range(len(s)-1):
        if s[i] == s[i+1]:
            count += 1
        else:
            res = res + s[i] + _ + str(count)+_
            count = 1
    res = res + s[len(s)-count] + _ + str(count)
    return res

s = aaabbadddffc
print(getCountStr(s))

二、 判断字符数组中是否所有的字符都只出现过一次

技术图片

要求1:采用字典来实现,比较简单。

要求2:考察排序。

    1. 先将chas排序,排序后相同的字符就放在一起,易判断有没有重复字符。
    2. 重点选择什么排序算法,保证空间复杂度为O(1)且时间复杂度较小。
    • 时间O(N)、空间O(1)的没有排序算法可以做到。
    • 时间O(NlogN):归并【其实递归也需要辅助空间】、快排【空间最低O(logN)】、希尔【时间不稳定,可能会变成O(N2)】、堆排序【可以】。
    • 结果选择堆排序,但要用非递归来实现,递归需要额外的空间。
#思路1:字典
def checkstr(s):
    if len(s) <= 1:
        return True
    dic = {}
    for i in range(len(s)):
        if s[i] in dic:
            return False
        else:
            dic[s[i]] = 1
    return True

#思路2:快速排序
def partition(s,l,r):
    if not s:
        return None
    pivot = s[l]
    index,small,big = l,l,r
    while index < big:
        if s[index] < pivot:
            s[small] , s[index] = s[index] , s[small]
            small += 1
            index += 1
        elif s[index] == pivot:
            index += 1
        else:
            s[index] , s[big] = s[big],s[index]
            big -= 1
    return small,index

def quick_sortStr(s,l,r):
    if not s:
        return s
    if l<r:
        l1,r1 = partition(s,l,r)
        quick_sortStr(s,l,l1)
        quick_sortStr(s,r1,r)
    return s

def checkStr(ss):
    if not ss:
        return True
    s = list(ss)
    sorts = quick_sortStr(s, 0, len(s)-1)
    for i in range(len(sorts)-1):
        if sorts[i] == s[i+1]:
            return False
    return True

#堆排序
n = 0
def buildTree(arr):
    global n
    if not arr:
        return arr
    for i in range(n//2-1,-1,-1):
        adjustTree(arr,i)
    return arr

def adjustTree(arr,i):
    global n
    if not arr:
        return arr
    maxIndex = i
    if i*2 + 1 < n and arr[i*2 +1] > arr[maxIndex]:
        maxIndex = i*2 + 1
    if i*2+2 < n and arr[i*2+2] > arr[maxIndex]:
        maxIndex = i*2 +2
    if maxIndex != i:
        arr[i] , arr[maxIndex] = arr[maxIndex] ,arr[i]
        adjustTree(arr,maxIndex)
    return arr


def heapSort(arr):
    global n
    if not arr:
        return arr
    n = len(arr)
    buildTree(arr)

    while n > 0:
        arr[0] , arr[n-1] = arr[n-1] , arr[0]
        n -= 1
        adjustTree(arr,0)
    return arr
def checkStr3(s):
    if len(s) <= 1:
        return True
    arr = list(s)
    sorts = heapSort(arr)
    for i in range(len(sorts)-1):
        if sorts[i] == s[i+1]:
            return False
    return True



s = abcd
print(checkStr3(s))

一行代码:

print(len(set(s))==len(s))

 

三、找到被指的新类型字符

技术图片

思路:从k-1位置开始向左统计大写字母的数量,根据奇偶性来判断。

技术图片

代码:

技术图片
def test(s,k):
    if not s or s == ‘‘ or k < 0 or k >= len(s):
        return ‘‘
    uNum = 0
    for i in range(k-1,-1,-1):
        if not s[i].isupper():
            break
        uNum += 1
    if uNum % 2 == 1:
        return s[k-1:k+1]
    if s[k].isupper():
        return s[k:k+2]
    return s[k]
s=‘aaABCDEcNCg‘
k = 7
test(s,k)
技术图片

 

以上是关于定义一个字符串变量,输入字符串,判断有没有连续重复的字符出现,统计重复字符出现次数,例如aaabaccdfff的主要内容,如果未能解决你的问题,请参考以下文章

javascript 连续判断字符

Java,输入一字符串,统计连续出现最多的字符,以及出现次数。 【编程】

怎么样判断一个变量是数字或字符 shell

字符串的遍历

输入一行字符(可能包含英文字母,数字字符等其他字符),要求统计其中单词的个数?

如何判断一个字符是数字还是字母