首页 > 解决方案 > 我正在尝试将“返回字符串问题中的第一个重复字符”从 python 转换为 powershell

问题描述

我已经在 python 中完成了同样的问题的编码,并试图生成类似的逻辑或至少在 powershell 中实现类似的结果。Python代码-

def FRC(str):
    h = {}

    for ch in str:
        if ch in h:
            return ch
        else:
            h[ch] = 0
    return '\0'
print(FRC("abcdedcba"))

我已经尝试了一些可能的代码,并且只能枚举字符数组来计算它们的出现次数。感谢您的任何建议。

Update1 - 我处理的代码如下:

function get-duplicatechar {
   [CmdletBinding()]
   param (
     [string]$teststring
   )

   $hash = @()
   $teststring = $teststring.ToCharArray()

   foreach ($letter in $teststring)
   {
        if($letter -contains $hash){
        return $letter
        }else {
        $hash = $hash + $letter
        }
      return "\0"
    }
}

get-duplicatechar("saahsahh")

标签: powershellcmdlet

解决方案


您可以为此使用 (.Net)HashSet,如果元素被添加到对象并且元素已经存在,则该Add方法(除了添加值)返回。trueHashSet<T>false

function get-duplicatechar {
    [CmdletBinding()]
    param (
      [string]$str
    )

    $h = [System.Collections.Generic.HashSet[char]]::new()

    foreach ($ch in $str.ToCharArray()) {
        if(!$h.add($ch)) { return $ch }
    }
}

推荐阅读