算法面试题总结之深度优先遍历

统计文件数量

  • 题目描述:给定一个文件目录的路径,编写一个函数统计该目录下所有的文件数量并返回(隐藏文件也算,但文件夹不算)
  • 解题思路:
    使用深度优先遍历(遍历过程中选用栈作为存储文件或文件夹的容器),遍历之前,先将头文件压栈(栈是否为空作为遍历完所有文件的判断标准),如果当前路径上是文件,计数器加1,如果当前路径上是文件夹,则遍历文件夹中的内容,判断是文件还是文件夹
public class CountFiles {

    public static int countFileNum(String folderPath){
        File root = new File(folderPath);
        if (root.isFile()){
            return 1;
        }
        // 如果如上判断,没有返回结果,可知root不是文件,则root可能是文件夹
        if (!root.isDirectory() && !root.isFile()){
            return 0;
        }
        // root是目录
        int count = 0;
        Stack<File> stack = new Stack<>();
        stack.push(root);
        while (!stack.isEmpty()){
            File cur = stack.pop();
            for (File next : cur.listFiles()) {
                if (next.isFile()){
                    count++;
                }
                if (next.isDirectory()){
                    stack.push(next);
                }
            }
        }
        return count;
    }

    public static void main(String[] args) {
        System.out.println(countFileNum("D:\\study_note"));
        System.out.println(countFileNum("D:\\study_note\\HeiMa"));
    }
}

你可能感兴趣的:(深度优先,算法)