噢三個數字之間糾纏不清的故事.

來源:互聯網
上載者:User
噢3個數字之間糾纏不清的故事...
嘿嘿,標題黨又來了。話說朋友問我個問題,如何判斷3個數字是順的?比如 123 321 456 654 465 ...901 901 019

也就是根據數值判斷是3個數字是否是相連內的成員

我的想法是 先分割,取得3個數裡最小的,然後判斷剩下的兩個是否都在裡面
比如 321 取得1 然後判斷 23 是否存在,如果存在就能確定.

特殊的901 直接定義一個數組進行判斷,判斷是否包含0 如果是 判斷是否包含9和1 ...(這裡可能需要排除012)

不知道各位有沒有其他更簡便的方式?



------解決方案--------------------
可以挨著判斷,比如一個為234,取出2,那麼第二位就是3或者1,記錄下是增還是減,然後就可以遞迴判斷後面的n位,這樣可以適合多個數位判斷
------解決方案--------------------
我的想法是:只真對數子哈:
直接將之截取放入數組中!然後數組安小-》大排個序,在取中間數去和兩邊的數比較判斷;


------解決方案--------------------
想到一個,019 特殊情況 之和為10 ,其他情況之和為中間數*3 . 代碼如下:
PHP code
function foo($s){      $arr=str_split($s);      if(in_array('9',$arr))             return (array_sum($arr)==10) ;      sort($arr,SORT_NUMERIC);      return array_sum($arr)==$arr[1]*3 ;}var_dump(foo('019'));   //bool(true)var_dump(foo('243'));   //bool(true)
------解決方案--------------------
一般的,對於 $n, $n∈{123 321 456 654 465 ..}
可以有:
$t = str_split($n);
if( array_sum($t) == (reset($t)+end($t))*count($t)/2 ) echo 'ok';

但是對於認定 901、109 為連續,就超出一般的認知了
------解決方案--------------------
不能判斷能夠相加被3除就行,比如 258..
------解決方案--------------------
PHP code
$temp = '0123456789 089 019';$samples = array(123, 321, 456, 654, 465, 901, 109, '019', 890, 908, 135, 250);foreach ( $samples as $value ) {    $ds = str_split( $value );    sort( $ds );    $ds = implode( '', $ds );    $result = ( strstr( $temp, $ds ) !== false ) ? 'yes' : 'no';    echo "{$value} - {$ds} : {$result}
";}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.