多语言解编程题之最大子串和

给予一个整数字符串,找出所有连续子串和的最大值。
样例输入:-23 17 -7 11 -2 1 -34
样例输出:21

JavaScript(Node)实现

const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
rl.on('line', function(line) {
    let str = line;
    let res = findMaxSum(str);
    console.log(res);
});

function findMaxSum(str) {
    let arr = str.split(' ').map(val => +val);
    let len = arr.length;
    let sum = Number.MIN_SAFE_INTEGER;
    let temp;
    for (let i = 0; i < len; i++) {
        temp = 0;
        for (let j = i; j < len; j++) {
            temp += arr[j];
            if (temp > sum) {
                sum = temp;
            }
        }
    }
    return sum;
}

PHP实现

<?php
    $handle = fopen("php://stdin", "r");
    $str = fgets($handle);
    while ($str !== "") {
        echo findMaxSum($str) . "\n";
        $str = fgets($handle);
    }
    fclose($handle);

    function findMaxSum($str) {
        $arr = array_map("intval", explode(" ", $str));
        $len = count($arr);
        $sum = PHP_INT_MIN;
        for ($i = 0; $i < $len; $i++) {
            $temp = 0;
            for ($j = $i; $j < $len; $j++) {
                $temp += $arr[$j];
                if ($temp > $sum) {
                    $sum = $temp;
                }
            }
        }
        return $sum;
    }

C++实现

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
#include <limits>
using namespace std;

int findMaxSum(string s) {
    stringstream iss(s);
    int number;
    vector<int> v;
    while(iss >> number) {
        v.push_back(number);
    }
    int n = v.size();
    int sum = numeric_limits<int>::min();
    int temp;
    for (int i = 0; i < n; i++) {
        temp = 0;
        for (int j = i; j < n; j++) {
            temp += v[j];
            if (temp > sum) {
                sum = temp;
            }
        }
    }
    return sum;
}

int main() {
    string s;
    while (getline(cin, s)) {
        cout << findMaxSum(s) << endl;
    }
    return 0;
}

题目比较简单,主要是熟悉一下各种语言的写法。

以上。

个人技术博客 biebu.xin,原文链接——多语言解编程题之最大子串和

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,367评论 2 35
  • Node.js是目前非常火热的技术,但是它的诞生经历却很奇特。 众所周知,在Netscape设计出JavaScri...
    w_zhuan阅读 3,639评论 2 41
  • 5月5号,我离开了海燕禅寺。上次是去年国庆,是为了解决我心头一件人生大事。从去年国庆到今年五一,头脑渐渐清晰 首先...
    大明186阅读 254评论 0 0
  • 梧婷阅读 85评论 0 0
  • 一只萝卜呀阅读 121评论 0 0