binstrlen.cpp

来自「几个实用算法:质数 组合数 公约数 字符串长度」· C++ 代码 · 共 65 行

CPP
65
字号
/*
  Name: 
  Copyright: Seu.Edu.Cn
  Author: ufouser
  Id: 09002611
  Date: 
  Description:    			
  
*/


#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>
#include <memory>
using namespace std;

long BinStrlen(const char * str, long maxLen)
{
 	if (str[0] == '\0')
 	{
 		return 0;
 	}
 	// 下面的求时间的过程可以忽略不计 
 	long l = 0; 
 	long r = maxLen;
 	long m;
 	long len = 0;
 		
 	while (l <= r)
 	{
 		m = (l + r) / 2;
 		if (str[m] == '\0')
 		{
 			r = m - 1;
 		}	
 		if (str[m] != '\0')
 		{
 			l = m + 1;
 			len = m;
 		}
   	}
   	return len + 1;
}

int main()
{

	char str[2001];
	memset(str,'\0',sizeof(str));
	// str[0] = 'a';
	cout << "defalut=" << BinStrlen(str,2000) << endl;
	for (long i = 0; i < 20; ++i)
	{
 		str[i] = 'a';
		cout << BinStrlen(str,2000) << endl;
		
	}	
	
    
    system("PAUSE");	
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?