如何在列表中查找非唯一字符的长度

时间:2015-01-20 17:03:21

标签: tcl

如何在TCL中找到列表的长度及其非重复/唯一值的值

例如:ABABC ===>预计结果是 唯一字符数为1,其值为C

2 个答案:

答案 0 :(得分:1)

set str ABABC
foreach char [split $str ""] {incr count($char)}
foreach key [array names count] {
    if {$count($key) == 1} {
        incr nuniq
        lappend uniq $key
    }
}
puts "$nuniq: [join $uniq ,]"
1: C

代替split,您可以使用regexp -all -inline {.} $str

获取字符串的字符

对于旧的Tcl,你可以这样做:

proc myincr {varname {step 1}} {
    upvar 1 $varname var
    if {![info exists var]} {
        set var $step
    } else {
        incr var $step
    }
}

并使用myincr代替incr

答案 1 :(得分:0)

另一种方法,

set var "ABCABDF"
foreach v [split $var ""] {
    lappend a $v
}

puts $a

set unique [lsort -unique $a]

set unique_chars ""

foreach item $unique {
    set cnt 0
    foreach i $a {
        if {$item == $i} {
            incr cnt
        }
    }
    if {$cnt == 1} {
        set unique_chars [lappend unique_chars $item]
    }
}

;# To Print Unique Chars
puts $unique_chars