字符串处理问题----判断是否有效数字和unix路径简化

关于给定字符串的处理,一般没有什么复杂的算法,就是写逻辑。根据题意,考虑清楚,逻辑层次清晰,AC不是难事。


65Valid Number

题目描述:

Validate if a given string is numeric.

Some examples:
"0" => true
" 0.1 " => true
"abc" => false
"1 a" => false
"2e10" => true

题目解析:

1. 题目的意思是给定一个string,需要判断是不是一个有效的数字,并且有可能是正数或者负数,有可能带着exp。
2. 看代码,注释很清晰。

代码如下:

class Solution {
public:
    bool isNumber(string s) 
    {   
        int size = s.size();
        // 跳过前导空格
	    int i = 0;
	    i = s.find_first_not_of(' ');
	    // 处理正负号
	    if(i>=0 && i='0' && s[i]<='9')
                bHasdight  =true;
            // 处理出现‘e’的情况,并且‘e’之后只能是数字,而且‘e’之后可以有正负号,不能有‘.’。‘e’出现之前必须出现数字
            else if('e' == s[i] && !bHasExp && bHasdight)
            {
                bHasExp = true;
                bHasPoint = true;
                ++i;
                if(i ='0' && s[i+1]<='9')
                        ++i;
                    else
                        return false;
                }
                else if(i>=size ||s[i]<'0' || s[i]>'9')
                    return false;
            }
            else
                break;
        }
        // 跳过数字后面的空格
        while(i


71Simplify Path

题目描述:

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

题目解析:

1. 给定一段unix风格的路径,要求对其进行简化。
2.首先,unix的简化代表意思得清楚:例如/tmp   绝对路径;./  当前目录;../   上层目录;../../  上2层目录;
3. 本题利用STL中的deque辅助来记忆每个有效路劲,很是方便,也可以用栈来做,基本思路都是一样,看代码


代码如下:

class Solution {
public:
    // 使用是一个deque解决此问题,它相当于一个队列和堆栈的组合体
	string simplifyPath(string path) 
	{
		dequede;
		int size = path.size();
		for(int i=0; i

你可能感兴趣的:(经典算法题)