2016-01-29 60 views
-1

嗨,我有一個輸入說「11234555611」。我想知道列表中有多少個連續的事件。例如:11,555。我想出了計算一個數字的連續出現

$val="11234555611"; 
# Splitting the numbers and putting in an array @strings. 
my %count; 

foreach my $str (@strings) { 
$count{$str}++; 
} 

這將給出每個數字的次數。你能幫助我嗎?

+2

會發生什麼事,當你運行它?你會得到期望的結果嗎?錯誤消息?輸出錯誤?請訪問[幫助]並閱讀[問]。 StackOverflow不是教程或代碼編寫網站。你需要付出一些努力來解決實際問題,然後解釋你做了什麼以及哪些不起作用。 –

+0

您可以使用標準C風格(可能不是官方名稱)for'循環,並檢查前一個字符是否與當前字符相同。 – Arc676

+0

@JimGarrison「這將給每個數字的遮擋數量。」這實際上並不能解決所需的任務。這只是一個開始。 – Arc676

回答

-1

需要一個變量$run保持跟蹤我們有多少個連續的字符已經看到:

my $val="11234555611"; 
my %count; 
my $last_char = ''; 
my $run = 0; 

foreach my $char (split //, $val) { 
    if ($last_char == $char) { 
     $run++; 
    } else { 
     $run = 1; 
    } 

    if ($run > $count{$char}) { 
     $count{$char} = $run; 
    } 
    $last_char = $char; 
}