【发布时间】:2015-01-20 17:03:21
【问题描述】:
如何在TCL中查找列表的长度及其非重复/唯一值的值
例如: ABABC ===>预期结果是 唯一字符数为1,其值为C
【问题讨论】:
-
您可以考虑更改要求非唯一字符的问题标题,而您的问题正文则讨论获取唯一字符的长度跨度>
标签: tcl
如何在TCL中查找列表的长度及其非重复/唯一值的值
例如: ABABC ===>预期结果是 唯一字符数为1,其值为C
【问题讨论】:
标签: tcl
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
【讨论】:
另一种方法,
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
【讨论】: