当前位置: 面试刷题>> 音乐播放表 (经典算法题500道)
### 题目描述补充
**题目:音乐播放表管理**
假设你正在开发一个音乐播放应用,该应用需要维护一个音乐播放列表。播放列表支持以下操作:
1. **添加歌曲**:向播放列表中添加一首新的歌曲。
2. **删除歌曲**:从播放列表中删除指定位置的歌曲。
3. **移动歌曲**:将播放列表中指定位置的歌曲移动到另一个指定位置。
4. **获取歌曲**:根据索引位置获取播放列表中的歌曲。
5. **获取播放列表长度**:返回当前播放列表中的歌曲总数。
为了简化问题,我们可以假设每首歌曲用一个唯一的字符串ID表示。
### 示例代码
以下是使用PHP、Python和JavaScript编写的示例代码,用于实现上述功能。
#### PHP 示例
```php
class MusicPlaylist {
private $playlist;
public function __construct() {
$this->playlist = [];
}
public function addSong($songId) {
$this->playlist[] = $songId;
}
public function removeSong($index) {
if (isset($this->playlist[$index])) {
unset($this->playlist[$index]);
$this->playlist = array_values($this->playlist); // 重新索引
}
}
public function moveSong($fromIndex, $toIndex) {
if (isset($this->playlist[$fromIndex]) && $toIndex >= 0 && $toIndex < count($this->playlist)) {
$song = $this->playlist[$fromIndex];
unset($this->playlist[$fromIndex]);
array_splice($this->playlist, $toIndex, 0, [$song]);
}
}
public function getSong($index) {
return isset($this->playlist[$index]) ? $this->playlist[$index] : null;
}
public function getPlaylistLength() {
return count($this->playlist);
}
}
// 使用示例
$playlist = new MusicPlaylist();
$playlist->addSong("song1");
$playlist->addSong("song2");
$playlist->moveSong(0, 1);
echo $playlist->getSong(1); // 输出: song1
echo $playlist->getPlaylistLength(); // 输出: 2
```
#### Python 示例
```python
class MusicPlaylist:
def __init__(self):
self.playlist = []
def add_song(self, song_id):
self.playlist.append(song_id)
def remove_song(self, index):
if 0 <= index < len(self.playlist):
del self.playlist[index]
def move_song(self, from_index, to_index):
if 0 <= from_index < len(self.playlist) and 0 <= to_index < len(self.playlist):
self.playlist.insert(to_index, self.playlist.pop(from_index))
def get_song(self, index):
if 0 <= index < len(self.playlist):
return self.playlist[index]
return None
def get_playlist_length(self):
return len(self.playlist)
# 使用示例
playlist = MusicPlaylist()
playlist.add_song("song1")
playlist.add_song("song2")
playlist.move_song(0, 1)
print(playlist.get_song(1)) # 输出: song1
print(playlist.get_playlist_length()) # 输出: 2
```
#### JavaScript 示例
```javascript
class MusicPlaylist {
constructor() {
this.playlist = [];
}
addSong(songId) {
this.playlist.push(songId);
}
removeSong(index) {
if (index >= 0 && index < this.playlist.length) {
this.playlist.splice(index, 1);
}
}
moveSong(fromIndex, toIndex) {
if (fromIndex >= 0 && fromIndex < this.playlist.length && toIndex >= 0 && toIndex < this.playlist.length) {
const song = this.playlist.splice(fromIndex, 1)[0];
this.playlist.splice(toIndex, 0, song);
}
}
getSong(index) {
if (index >= 0 && index < this.playlist.length) {
return this.playlist[index];
}
return null;
}
getPlaylistLength() {
return this.playlist.length;
}
}
// 使用示例
const playlist = new MusicPlaylist();
playlist.addSong("song1");
playlist.addSong("song2");
playlist.moveSong(0, 1);
console.log(playlist.getSong(1)); // 输出: song1
console.log(playlist.getPlaylistLength()); // 输出: 2
```
**码小课网站中有更多相关内容分享给大家学习**,希望这些示例能帮助你更好地理解和实现音乐播放表管理功能。