2024-08-15

这是一个Web前端开发的简单示例,使用了HTML5, CSS3, JavaScript, Vue.js 和 Bootstrap。这个示例创建了一个简单的网站,展示了如何使用这些技术构建一个响应式网页。




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web前端实战示例</title>
    <!-- 引入Bootstrap样式 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <!-- 引入Vue.js -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.12/dist/vue.min.js"></script>
    <style>
        /* 自定义CSS样式 */
        .jumbotron {
            margin-top: 20px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div id="app" class="container">
        <div class="jumbotron">
            <h1 class="display-4">{{ title }}</h1>
            <p class="lead">{{ subtitle }}</p>
        </div>
        <div class="row">
            <div class="col-md-4">
                <div class="card">
                    <div class="card-body">
                        <h5 class="card-title">{{ cards[0].title }}</h5>
                        <p class="card-text">{{ cards[0].text }}</p>
                    </div>
                </div>
            </div>
            <!-- 其他列组件 -->
        </div>
    </div>
 
    <script>
        new Vue({
            el: '#app',
            data: {
                title: '欢迎来到我的网站',
                subtitle: '这是一个简单的Vue.js + Bootstrap网页',
                cards: [
                    { title: '卡片1', text: '这是卡片的内容。' },
                    // 其他卡片数据
                ]
            }
        });
    </script>
</body>
</html>

这个示例展示了如何使用Vue.js来创建数据驱动的视图,以及如何使用Bootstrap提供的样式库来快速构建响应式网页。这个简单的网站可以作为学习Web前端开发的起点。

2024-08-15

题目描述:

给定两个字符串s1和s2,请编写程序,其功能是把s2串插入到s1串的字符之间。

解题思路:

  1. 确定s1和s2的长度。
  2. 创建一个新的字符串,长度为s1长度加两倍s2长度减一。
  3. 遍历s1的每个字符,每遍历一个字符就插入s2。
  4. 如果s1有剩余字符,则插入剩下的s2字符。

Java 示例代码:




public class Main {
    public static void main(String[] args) {
        String s1 = "abcd";
        String s2 = "12";
        System.out.println(insertString(s1, s2));
    }
 
    public static String insertString(String s1, String s2) {
        int s1Len = s1.length();
        int s2Len = s2.length();
        StringBuilder sb = new StringBuilder();
 
        for (int i = 0; i < s1Len; i++) {
            sb.append(s1.charAt(i));
            if (i < s1Len - 1) {
                sb.append(s2);
            }
        }
        if (s1Len * s2Len > s1Len) {
            sb.append(s2.substring(0, s2Len - 1));
        }
        return sb.toString();
    }
}

JavaScript 示例代码:




function insertString(s1, s2) {
    let result = '';
    for (let i = 0; i < s1.length; i++) {
        result += s1[i];
        if (i < s1.length - 1) {
            result += s2;
        }
    }
    if (s1.length * s2.length > s1.length) {
        result += s2.substring(0, s2.length - 1);
    }
    return result;
}
 
console.log(insertString("abcd", "12"));

Python 示例代码:




def insert_string(s1, s2):
    result = ''
    for i in range(len(s1)):
        result += s1[i]
        if i < len(s1) - 1:
            result += s2
    if len(s1) * len(s2) > len(s1):
        result += s2[:len(s2) - 1]
    return result
 
print(insert_string("abcd", "12"))

C 示例代码:




#include <stdio.h>
#include <string.h>
 
char* insertString(char* s1, char* s2) {
    int s1Len = strlen(s1);
    int s2Len = strlen(s2);
    char* result = (char*)malloc(sizeof(char) * (s1Len + s2Len));
    int i, j;
 
    for (i = j = 0; i < s1Len; i++) {
        result[j++] = s1[i];
        if (i < s1Len - 1) {
            strcpy(result + j, s2);
            j += s2Len;
        }
    }
    if (s1Len * s2Len > s1Len) {
        strncpy(result + j, s2, s2Len - 1);
        result[j + s2Len - 1] = '\0';
    }
    return result;
}
 
int main() {
    char s1[] = "abcd";
    char s2[] = "12";
    char* result = insertString(s1, s2);
    printf("%s\n", result);
    free(result);
    return 0;
}

C++ 示例代码:




#include <iostream>
#include <string>
 
std::string insertString(std::string s1, std::string s2)
2024-08-15

题目描述:

一个猴子有X个桃子,它每天都会吃现有的一半(四舍五入到最近的整数),并且每天都会生产一个新的桃子。有一天它会吃掉所有的桃子。假设猴子不会死,问需要多少天它会吃掉N(0 < N < 2^31)个桃子。

输入描述:

每行包含一个正整数N,代表猴子吃的桃子数量。

输出描述:

输出猴子吃掉N个桃子所需的天数。

示例:

输入:

输出:

说明:

当输入为1时,猴子开始有1个桃子。第1天吃掉1个,生产1个,有2个桃子。第2天吃掉1个,生产1个,有2个桃子。总共需要2天。

解法:




import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int n = scanner.nextInt();
            System.out.println(calculateDays(n));
        }
        scanner.close();
    }
 
    private static int calculateDays(int n) {
        int days = 0;
        while (n > 0) {
            n = (n + 1) / 2; // 新产的桃子算上现有的桃子
            days++;
        }
        return days;
    }
}

注意:

  • 输入的N是指猴子吃掉的桃子数,而不是猴子一开始就有的桃子数。
  • 每天吃的桃子数量是当前所有的桃子数量的一半(向上取整),新产的桃子数是原有的桃子数量加1。
  • 每天结束后,猴子的总桃子数就是所有吃掉的桃子数量和新产的桃子数量之和。
  • 当猴子吃掉所有的桃子,即peanuts之和为0时,计算结束。
2024-08-15

要将 JavaScript 中 new Date() 生成的日期格式转换为 'yyyy-MM-dd HH:mm:ss' 格式,可以使用以下代码示例:




function formatDate(date) {
  function padZero(num) {
    return num < 10 ? '0' + num : num;
  }
 
  var year = date.getFullYear();
  var month = padZero(date.getMonth() + 1); // 月份是从0开始的
  var day = padZero(date.getDate());
  var hours = padZero(date.getHours());
  var minutes = padZero(date.getMinutes());
  var seconds = padZero(date.getSeconds());
 
  return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
 
var date = new Date();
console.log(formatDate(date)); // 输出格式为 'yyyy-MM-dd HH:mm:ss'

这段代码定义了一个 formatDate 函数,它接受一个 Date 对象作为参数,并返回一个格式化为 'yyyy-MM-dd HH:mm:ss' 的字符串。函数内部定义了一个辅助函数 padZero 来处理月份、日期、小时、分钟和秒钟小于10时的前缀0。最后返回的字符串模板字面量包含了格式化后的日期和时间。

2024-08-15



// 假设我们已经有了一个HTML5 Canvas元素和相关的ctx绘图上下文
var canvas = document.getElementById('myCanvas');
var ctx = canvas.getContext('2d');
 
// 地图数据,这里使用二维数组表示每个方格是否可以通行
var mapData = [
    [1, 1, 1, 1, 1, 1, 1, 1],
    [1, 0, 0, 0, 0, 0, 0, 1],
    [1, 0, 1, 1, 1, 1, 0, 1],
    [1, 0, 1, 0, 0, 1, 0, 1],
    [1, 0, 1, 1, 1, 1, 0, 1],
    [1, 0, 0, 0, 0, 0, 0, 1],
    [1, 1, 1, 1, 1, 1, 1, 1]
];
 
// 地图的大小
var mapWidth = 8;
var mapHeight = 7;
 
// 地图的单元格大小
var cellSize = 32;
 
// 绘制地图
function drawMap() {
    for (var y = 0; y < mapHeight; y++) {
        for (var x = 0; x < mapWidth; x++) {
            if (mapData[y][x] === 1) {
                ctx.fillStyle = '#333'; // 绘制为深灰色的方块
                ctx.fillRect(x * cellSize, y * cellSize, cellSize, cellSize);
            }
        }
    }
}
 
// 键盘按键处理
document.addEventListener('keydown', function(event) {
    var keyCode = event.keyCode;
    switch (keyCode) {
        case 37: // 左键移动视图
            break;
        case 38: // 上移动视图
            break;
        case 39: // 右键移动视图
            break;
        case 40: // 下移动视图
            break;
    }
});
 
// 调用函数绘制地图
drawMap();

这个代码示例展示了如何使用JavaScript和HTML5 Canvas来绘制一个简单的Q版地图,并且通过键盘的上下左右按键来控制地图场景的移动。代码中包含了绘制地图的函数drawMap和键盘按键的事件监听器,但没有实现实际的场景移动逻辑,因为这个逻辑取决于具体的游戏设计和上下文。

2024-08-15

在JavaScript中,数组是一种特殊的对象,它能在单个的变量名下存储多个值。

  1. 创建数组



let fruits = ['apple', 'banana', 'cherry'];
  1. 访问数组元素



console.log(fruits[0]); // 输出 'apple'
  1. 更新数组元素



fruits[0] = 'orange';
console.log(fruits[0]); // 输出 'orange'
  1. 在数组末尾添加元素



fruits.push('peach');
console.log(fruits); // 输出 ['orange', 'banana', 'cherry', 'peach']
  1. 删除数组最后一个元素



fruits.pop();
console.log(fruits); // 输出 ['orange', 'banana', 'cherry']
  1. 在数组开头添加元素



fruits.unshift('strawberry');
console.log(fruits); // 输出 ['strawberry', 'orange', 'banana', 'cherry']
  1. 删除数组第一个元素



fruits.shift();
console.log(fruits); // 输出 ['orange', 'banana', 'cherry']
  1. 使用数组的函数方法(例如 map, filter, reduce



let nums = [1, 2, 3, 4, 5];
let sum = nums.reduce((total, num) => total + num);
console.log(sum); // 输出 15
  1. 使用循环遍历数组



for (let i = 0; i < fruits.length; i++) {
  console.log(fruits[i]);
}
  1. 使用 forEach 方法遍历数组



fruits.forEach(fruit => console.log(fruit));
  1. 使用 for...of 循环遍历数组



for (const fruit of fruits) {
  console.log(fruit);
}
  1. 数组的合并



let moreFruits = ['grape', 'fig'];
let allFruits = fruits.concat(moreFruits);
console.log(allFruits); // 输出 ['orange', 'banana', 'cherry', 'grape', 'fig']
  1. 数组的克隆



let fruitsCopy = fruits.slice();
console.log(fruitsCopy); // 输出 ['orange', 'banana', 'cherry']
  1. 数组元素的搜索



let index = fruits.indexOf('banana');
console.log(index); // 输出 1
  1. 数组元素的排序



let sortedNums = nums.sort((a, b) => a - b);
console.log(sortedNums); // 输出 [1, 2, 3, 4, 5]
  1. 数组的反转



fruits.reverse();
console.log(fruits); // 输出 ['cherry', 'banana', 'orange']
  1. 数组的截取



let partFruits = fruits.slice(1, 3);
console.log(partFruits); // 输出 ['banana', 'cherry']
  1. 数组的转换为字符串



console.log(fruits.join(' - ')); // 输出 'orange - banana - cherry'
  1. 检查数组中是否包含某个元素



console.log(fruits.includes('banana')); // 
2024-08-15

JavaScript 是一种广泛使用的高级编程语言,主要用于网页脚本和服务器端开发。它是一种动态类型语言,并且具有具有现代语言的一些特性,如类、模块和lambda表达式。

以下是一个简单的JavaScript代码示例,它会在网页上显示“Hello, World!”:




<!DOCTYPE html>
<html>
<body>
 
<h2>我的第一个 JavaScript 程序</h2>
 
<p id="demo"></p>
 
<script>
function myFunction() {
  return "Hello, World!";
}
 
document.getElementById("demo").innerHTML = myFunction();
</script>
 
</body>
</html>

这段代码首先定义了一个函数 myFunction,该函数返回一个字符串 "Hello, World!"。然后,使用 document.getElementById 方法找到ID为 "demo" 的元素,并将 myFunction 的返回值设置为该元素的 innerHTML,这会在网页上显示文本。

2024-08-15

题目:计算三叉搜索树的高度。

解法:三叉搜索树的高度是其最长路径的长度。可以通过中序遍历来找到这个最长路径。

Java 代码示例:




class Solution {
    int maxHeight = 0;
 
    public int getHeight(TreeNode root) {
        helper(root);
        return maxHeight;
    }
 
    private void helper(TreeNode node) {
        if (node == null) {
            return;
        }
        helper(node.left);
        maxHeight = Math.max(maxHeight, getCurrentHeight(node));
        helper(node.right);
    }
 
    private int getCurrentHeight(TreeNode node) {
        int leftHeight = node.left == null ? 0 : node.left.height;
        int rightHeight = node.right == null ? 0 : node.right.height;
        return 1 + Math.max(leftHeight, rightHeight);
    }
}

JavaScript 代码示例:




/**
 * @param {TreeNode} root
 * @return {number}
 */
var getHeight = function(root) {
    let maxHeight = 0;
    dfs(root);
    return maxHeight;
 
    function dfs(node) {
        if (node === null) {
            return;
        }
        dfs(node.left);
        maxHeight = Math.max(maxHeight, getCurrentHeight(node));
        dfs(node.right);
    }
 
    function getCurrentHeight(node) {
        const leftHeight = node.left === null ? 0 : node.left.height;
        const rightHeight = node.right === null ? 0 : node.right.height;
        return 1 + Math.max(leftHeight, rightHeight);
    }
};

Python 代码示例:




class Solution:
    def getHeight(self, root: 'TreeNode') -> int:
        self.max_height = 0
        self.helper(root)
        return self.max_height
 
    def helper(self, node: 'TreeNode'):
        if not node:
            return
        self.helper(node.left)
        self.max_height = max(self.max_height, self.get_current_height(node))
        self.helper(node.right)
 
    def get_current_height(self, node: 'TreeNode'):
        left_height = 0 if node.left is None else node.left.height
        right_height = 0 if node.right is None else node.right.height
        return 1 + max(left_height, right_height)

C 代码示例:




struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    // 假设每个节点都有一个额外的字段height表示其高度
};
 
int maxHeight = 0;
 
void helper(struct TreeNode* node) {
    if (node == NULL) {
        return;
    }
    helper(node->left);
    maxHeight = MAX(maxHeight, getCurrentHeight(node));
    helper(node->right);
}
 
int getCurrentHeight(str
2024-08-15



// 引入 XLSX.js 库
const XLSX = require('xlsx');
 
// 假设我们有一个对象数组,每个对象代表Excel中的一行数据
const data = [
  { name: 'Alice', email: 'alice@example.com', age: 25 },
  { name: 'Bob', email: 'bob@example.com', age: 30 },
  { name: 'Charlie', email: 'charlie@example.com', age: 35 }
];
 
// 将数据转换为工作表
const worksheet = XLSX.utils.json_to_sheet(data);
 
// 创建工作簿并添加工作表
const workbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
 
// 写入文件
XLSX.writeFile(workbook, 'output.xlsx');
 
// 注意:确保你的环境中已经安装了 XLSX.js 库,可以使用 npm 安装:npm install xlsx

这段代码演示了如何使用XLSX.js库将一个简单的对象数组导出为Excel文件。首先,我们创建了一个包含数据的数组。然后,我们使用XLSX.utils.json_to_sheet函数将这些数据转换为工作表。接着,我们创建了一个新的工作簿并添加了这个工作表。最后,我们使用XLSX.writeFile函数将工作簿写入到一个文件中,文件名为output.xlsx

2024-08-15

xlsx.js 是一个基于 JavaScript 的库,用于读取和写入 Excel 文件。以下是一个使用 xlsx.js 读取和写入 Excel 文件的简单示例:

首先,确保安装了 xlsx 库:




npm install xlsx

然后,可以使用以下代码读取和写入 Excel 文件:




const XLSX = require('xlsx');
 
// 读取 Excel 文件
const workbook = XLSX.readFile('example.xlsx');
const sheetNames = workbook.SheetNames;
const sheet = workbook.Sheets[sheetNames[0]];
 
// 将工作表转换为 JSON
const data = XLSX.utils.sheet_to_json(sheet);
console.log(data);
 
// 写入 Excel 文件
const newData = [
  { A1: "Hello", B1: "World" },
  { A2: 123, B2: 456 }
];
 
const worksheet = XLSX.utils.json_to_sheet(newData);
const newWorkbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(newWorkbook, worksheet, "Sheet1");
XLSX.writeFile(newWorkbook, 'new_example.xlsx');

这段代码首先读取了名为 example.xlsx 的 Excel 文件,并将其第一个工作表转换为 JSON 格式。然后,它创建了一个新的 Excel 工作簿,并将 JSON 数据添加到一个新的工作表中,最后将其写入 new_example.xlsx 文件。