dongnianwo8289 2011-02-13 04:20
浏览 15
已采纳

比较两个字符串的复杂性

$haystack = array('T', 'h', 'i', 's', 'i', 's', 's', 'r', 'i', 'k', 'a', 'n', 't', 'h');
$needle = array('s', 'r', 'i', 'k', 'a', 'n', 't', 'h');
$array = array();
$k = -1;

$m = count($needle);
$n = count($haystack);
//****************1st type********************
for ($i = 0; $i < $m; $i++) {
    for ($j = 0; $j < $n; $j++) {
        if ($needle[$i] == $haystack[$j]) {
            $array[++$k] = $needle[$i];
            //echo $needle[$i]."<br/>";
            break;
        }
    }
}
//********************2nd type**************************
$found_array = array();
$j = 0;
for ($i = 0; $i < $n; $i++) {
    if ($needle[$j] == $haystack[$i]) {
        $found_array[] = $needle[$j];
        $j++;
    }
}

echo '<pre>';
print_r($array);
echo '</pre>';

echo '<pre>';
print_r($found_array);
echo '</pre>';

As you could see I am comparing 2 strings...using 2 different types. what is complexity of each of them? My answer is O(NM) for both..Am I correct???

  • 写回答

1条回答 默认 最新

  • dongzhao1930 2011-02-13 04:27
    关注

    the top one is O(NM) because you have the two nested for loops.

    The bottom one is O(N) as you only traverse the needle array.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据