首页 > 试题广场 >

获取字符串的长度

[编程题]获取字符串的长度
  • 热度指数:33613 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1
否则如果字符 Unicode 编码 > 255 则长度为 2
示例1

输入

'hello world, 牛客', false

输出

17
function strLength(s, bUnicode255For1) {
//如果bUnicode255For1为false,返回s的长度加正则匹配\u0256-\uffff的长度
return s.length+(bUnicode255For1?0:(s.match(/[\u0256-\uffff]/g)||[]).length)
}

编辑于 2017-03-09 10:03:17 回复(3)
function strLength(s, bUnicode255For1) {
    let len = s.length;
    if(bUnicode255For1 === true) {
        return len;
    }else {
        for(let i in s) {
            if(s.charCodeAt(i) > 255) {
                len++; 
            }
        }
    }
    return len;
}

发表于 2022-03-26 17:22:15 回复(0)
function strLength(s, bUnicode255For1) {
    if (bUnicode255For1) return s.length;
    var len = s.length;
    s.split('').forEach((item, index) => {
        if (s.charCodeAt(index) > 255) len++;
    })
    return len;
}

发表于 2022-01-06 15:51:06 回复(1)
function strLength(s, bUnicode255For1) {
    if(bUnicode255For1){
        return s.length;
    }
    let len = s.length;
    s.split('').forEach(si => { si.charCodeAt(0) > 255 && len++ });
    return len;
}
发表于 2021-07-28 15:17:50 回复(0)
const strLength = (s, bUnicode255For1) => {
    if (bUnicode255For1) {
        return s.length;
    } else {
        let count = 0;
        for (let i = 0; i < s.length; i++) {
            if (s.charCodeAt(i) > 255) {
                count += 2;
            } else {
                count++;
            }
        }
        return count;
    }
};

发表于 2021-06-02 12:40:49 回复(0)
function strLength(s, bUnicode255For1) {
    if(bUnicode255For1){
        return s.length;
    }
    else{
        var length = 0;
        for(var i in s ){
            if(s.charCodeAt(i)>255)length += 2;
            else length++;
        }
        return length;
    }
}

发表于 2017-08-06 10:56:28 回复(0)
function strLength(s, bUnicode255For1) {
    if(bUnicode255For1 === true){
        return s.length;		    	
    }
    for(var i=0,m=0,len=s.length; i<len; i++){
        if(s.charCodeAt(i)>255)
            m++;
    }
    return m*2+(s.length-m);  
}
//console.log(strLength('hello world, 牛客', false));

发表于 2017-03-23 13:09:00 回复(0)
function strLength(s, bUnicode255For1) {

	    if (bUnicode255For1 === true) {
	        return s.length;
	    }else {
	    	var l = 0;
	        for (var i in s){
	        	if(s.charCodeAt(i)>255){
	        		l = l+2;
	        	} else {
	        		l = l+1;
	        	}
	        }
	      	return l; 
	    }
}

发表于 2016-08-16 10:59:39 回复(0)
function strLength(s, bUnicode255For1) {
    if( bUnicode255For1 ){
        return s.length;
    }else{
        var len = s.length;
        for( var i=0; i<s.length; i++ ){
            if( s.charCodeAt(i) > 255 ){
                len++;
            }
        }
        return len;
    }
}

发表于 2016-04-28 16:35:55 回复(3)
什么意思?
发表于 2015-06-07 10:44:33 回复(0)
function strLength(s, bUnicode255For1) {
    var sLength=0;
    if(bUnicode255For1===true){
        return s.length;
    }else{
        for(var i=0;i<s.length;i++){
            if(s.charCodeAt(i)>255){
                sLength+=2;
            }else{
                sLength+=1;
            }
        }
    }
    return sLength;
}


这个题目的题意说的不是很清楚。上面的代码是全部通过测试用例的,“如果第二个参数 bUnicode255For1 === true,则所有字符长度为 1”的意思是每个字符长度都是1,所以当bUnicode255For1 === true时,返回值应该为s.length。
发表于 2015-06-30 16:36:07 回复(5)
function strLength (s, bUnicode255For1) {
    if(bUnicode255For1) return s.length
    return [].reduce.call(s, function(sum, value){
        return value.charCodeAt(0) > 255 ? sum + 2 : sum + 1
    }, 0)
}

编辑于 2017-04-02 16:59:30 回复(0)
function strLength(s, bUnicode255For1) {
var len = s.length;
return bUnicode255For1 ?  len : len + s.replace(/[\u0000-\u0255]/g,"").length;
}
编辑于 2020-06-09 13:57:55 回复(0)
function strLength(s, bUnicode255For1) {
    if(bUnicode255For1 === true)
        return s.length;
    var length = 0;
    for(var i = 0; i < s.length; i++){
		if(s.charCodeAt(i) > 255)
            length = length + 2;
        else
            length = length + 1;
    }
    return length;
}

发表于 2017-02-18 09:18:14 回复(0)
还是看不懂题目的,改写一下描述就懂了:
如果 bUnicode255For1 === true,则每个字符的长度为默认值 1。
如果字符 Unicode 编码 > 255 ,则每个字符的长度都变成 2,也就是 'abc' 的 length 从 3 变成了 6。
发表于 2022-02-24 21:21:42 回复(0)
const strLength = (s, bUnicode255For1) => bUnicode255For1 ? s.length : s.split('').reduce((acc, cur) => cur.charCodeAt() > 255 ? acc += 2 : acc += 1, 0)
发表于 2023-09-10 15:58:55 回复(0)
function strLength(s, bUnicode255For1) {
const strLen = s.length;
if (bUnicode255For1) {
return strLen;
}

let u255 = 0
for (let i = 0; i < strLen; i ++) {
if (s.charAt(i).charCodeAt() > 255) {
u255 ++;
}
}

return strLen + u255;
}
发表于 2023-09-07 22:42:09 回复(0)
 <script type="text/javascript">
        function strLength(s, bUnicode255For1) {
            let len = s.length
            if (bUnicode255For1) return len
            for (const i of s) {
                if (i.charCodeAt(0) > 255) {
                    len++
                }
            }
            return len
        }
    </script>

发表于 2023-09-04 16:26:01 回复(0)
function strLength(s, bUnicode255For1) {
  if(bUnicode255For1==true){
    return s.length
  }
  if(bUnicode255For1==false){
    var changdu=0
         for(var i=0;i<s.length;i++){
           if(s.charCodeAt(i)>255){
                changdu=changdu+2
           }
           else {
             changdu++
           }
         }
  }
  return changdu
}
发表于 2023-04-10 16:02:18 回复(0)
function strLength(s, bUnicode255For1) {
    var length = s.length;
    if(bUnicode255For1 === true){
        return length;
    }
    else{
        for(var i in s ){
            if(s.charCodeAt(i)>255){
                length++;
            }
        }
    }
    return length;


}

发表于 2022-10-20 16:05:25 回复(0)